文章背景图

Day49-68-测验与作业

2026-06-04
1
-
- 分钟
|

Day49-68 数据库 - 测验与作业

MySQL 基础测验

一、选择题

  1. MySQL 中,用于存储引擎层日志的文件是?

    • A. error.log
    • B. binlog
    • C. redolog
    • D. undolog
  2. InnoDB 存储引擎的索引数据结构是?

    • A. Hash 表
    • B. B+ 树
    • C. 二叉树
    • D. 红黑树
  3. 以下哪个不是 DDL 语句?

    • A. CREATE
    • B. ALTER
    • C. INSERT
    • D. DROP
  4. GROUP BY 语句用于?

    • A. 排序
    • B. 分组
    • C. 过滤
    • D. 连接
  5. UNION 与 UNION ALL 的区别是?

    • A. 无区别
    • B. UNION 去重
    • C. UNION ALL 去重
    • D. UNION 更快

二、填空题

  1. MySQL 约束中,PRIMARY KEY 表示________约束。
  2. SELECT 语句的执行顺序:FROM → WHERE → ________→ ORDER BY。
  3. InnoDB 存储引擎默认的隔离级别是________。
  4. 索引可以加速________操作,但会降低________操作的性能。
  5. VARCHAR(100) 表示最大存储________个字符。

三、简答题

  1. 简述 CHAR 和 VARCHAR 的区别。

  2. 什么是主键和唯一键的区别?

  3. 解释什么是外键约束及级联操作。


MySQL 进阶测验

一、选择题

  1. B+ 树相比 B 树的优势是?

    • A. 更矮
    • B. 所有数据在叶子节点
    • C. 支持范围查询
    • D. 以上都是
  2. EXPLAIN 输出中,以下哪个 type 类型最优?

    • A. ALL
    • B. index
    • C. ref
    • D. const
  3. 最左前缀原则适用于?

    • A. 单列索引
    • B. 联合索引
    • C. 全文索引
    • D. 空间索引
  4. 以下哪个场景会导致索引失效?

    • A. LIKE ‘abc%’
    • B. LIKE ‘%abc’
    • C. 索引列参与运算
    • D. B 和 C
  5. 覆盖索引是指?

    • A. 主键索引
    • B. 查询只需访问索引
    • C. 全表扫描
    • D. 联合索引

二、简答题

  1. 请描述 MySQL 的 MVCC 原理。

  2. 什么是脏读、不可重复读、幻读?

  3. 请说明 Redo Log 和 Binlog 的区别。

  4. 主从复制有哪几种模式?各有何优缺点?

  5. 如何优化深度分页查询?


Redis 测验

一、选择题

  1. Redis 支持的数据类型有?

    • A. String
    • B. Hash
    • C. List
    • D. 以上都是
  2. Redis 持久化方式 RDB 的特点是?

    • A. 存储全部数据
    • B. 存储增量命令
    • C. 混合持久化
    • D. 不支持
  3. Redis 主从复制中,从库默认是?

    • A. 只读
    • B. 可写
    • C. 视配置而定
    • D. 不可配置
  4. 缓存穿透的原因是?

    • A. 查询不存在的数据
    • B. 热点数据过期
    • C. 大量数据同时过期
    • D. Redis 宕机
  5. 哨兵模式的作用是?

    • A. 数据分片
    • B. 自动故障转移
    • C. 数据压缩
    • D. 持久化

二、填空题

  1. Redis Cluster 将数据分为________个哈希槽。
  2. Redis 的 AOF 同步策略中,默认策略是________。
  3. 缓存击穿的解决方案之一是使用________锁。
  4. Redis 的数据类型中,用于实现排行榜的是________。
  5. 双写一致性方案中,Cache-Aside 模式是________缓存后删除缓存。

三、简答题

  1. 请简述 Redis 和 Memcached 的区别。

  2. 什么是缓存雪崩?如何解决?

  3. 请描述 Redis 主从复制的原理。

  4. Redis Cluster 是如何实现数据分片的?

  5. 请说明延迟双删的原理及延迟时间如何计算。


答案

MySQL 基础答案

题号 答案 解析
1 C redolog 用于存储引擎层
2 B InnoDB 使用 B+ 树
3 C INSERT 是 DML
4 B GROUP BY 用于分组
5 B UNION 去重
6 主键 PRIMARY KEY
7 GROUP BY 执行顺序
8 REPEATABLE READ RR 隔离级别
9 查询/写入 索引的权衡
10 100 VARCHAR 定义长度

简答题答案:

  1. CHAR vs VARCHAR

    • CHAR:固定长度,不足用空格填充
    • VARCHAR:可变长度,只存储实际字符
    • CHAR 适合定长数据,VARCHAR 节省空间
  2. 主键 vs 唯一键

    • 主键:唯一标识,每表一个,不允许 NULL
    • 唯一键:唯一约束,可多个,允许 NULL
  3. 外键约束

    • 外键用于建立表间关联
    • 级联操作:CASCADE(级联删除/更新)、SET NULL、NO ACTION

MySQL 进阶答案

题号 答案 解析
1 D B+ 树具有以上所有优势
2 D const 最优(主键/唯一索引等值)
3 B 最左前缀适用于联合索引
4 D B 和 C 都会导致索引失效
5 B 覆盖索引无需回表

简答题答案:

  1. MVCC 原理

    • 每行数据包含隐藏字段:事务 ID 和回滚指针
    • 通过 Undo Log 形成版本链
    • Read View 判断数据可见性
    • RC 每次查询生成新 Read View,RR 复用首次 Read View
  2. 三种读现象

    • 脏读:读取未提交事务的数据
    • 不可重复读:同一事务内两次读取结果不同
    • 幻读:同一事务内两次查询结果集不同
  3. Redo Log vs Binlog

    • Redo Log:物理日志,用于崩溃恢复
    • Binlog:逻辑日志,用于主从复制
    • Redo Log 在存储引擎层,Binlog 在 Server 层
  4. 主从复制模式

    • 异步复制:性能高,可能丢数据
    • 半同步复制:等待至少一个从库确认,平衡性能和数据安全
    • 全同步复制:所有从库确认,性能最低
  5. 深度分页优化

    • 延迟关联:先查主键再关联
    • 游标分页:基于上一页最大 ID
    • 覆盖索引:减少回表

Redis 答案

题号 答案 解析
1 D Redis 支持 String/Hash/List/Set/ZSet 等
2 A RDB 是全量快照
3 A 从库默认只读
4 A 查询不存在数据导致穿透
5 B 哨兵用于自动故障转移
6 16384 Redis Cluster 槽位
7 everysec 每秒同步
8 互斥/分布式 防止击穿
9 ZSet 有序集合实现排行
10 先更新数据库 Cache-Aside 流程

简答题答案:

  1. Redis vs Memcached

    • Redis:支持多种数据结构,有持久化,支持集群
    • Memcached:纯 KV,仅内存存储,不支持持久化
  2. 缓存雪崩

    • 原因:大量缓存同时过期
    • 解决:过期时间随机化、多级缓存、限流熔断
  3. 主从复制原理

    • 从库发送 PSYNC 命令
    • 主库 BGSAVE 生成 RDB
    • 发送 RDB 给从库
    • 增量同步命令缓冲区
  4. Redis Cluster 分片

    • 16384 个哈希槽
    • CRC16(key) % 16384 计算槽位
    • 每个节点负责部分槽位
  5. 延迟双删原理

    • 先删缓存 → 更新数据库 → 延迟 N 秒 → 再删缓存
    • 延迟时间 = 读请求平均耗时 × 1.5 + 主从同步延迟
原创

Day49-68-测验与作业

本文链接: Day49-68-测验与作业

本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。

评论交流

文章目录