
B站河北王校长-MySQL深度核心面试知识点汇总.pdf
5星
- 浏览量: 0
- 大小:None
- 文件类型:PDF
简介:
这份PDF是由B站知名UP主“王校长”整理发布的关于MySQL深度核心知识的学习资料,特别适合准备MySQL相关技术岗位面试的读者。涵盖了面试中常见的关键知识点和高级技巧。
### MySQL深度核心面试知识点解析
#### 一、MySQL数据库索引数据结构——B+树
**知识点概述**:
- **B+树定义**:B+树是一种专为磁盘等直接存取辅助设备设计的平衡查找树。
- **特点**:
- 所有记录节点都按键值大小顺序存放在同一层的叶子节点上。
- 非叶子节点仅用于指导搜索路径,不存储实际数据。
- 各叶子节点通过指针相互连接形成链表。
- 具有较高的扇出度,使得树的高度较低,从而减少磁盘IO操作。
**应用场景**:
- MySQL数据库的索引主要采用B+树结构,包括聚集索引和辅助索引。
- **聚集索引**:是基于表的主键构建的索引,叶子节点存储完整的行数据。
- **辅助索引**:除了主键外的其他索引,其叶子节点存储的是主键值和行数据的地址。
**优势分析**:
- **高扇出性**:每个节点能容纳更多的子节点,降低了树的高度。
- **高效查询**:由于树的高度较低,每次查询最多只需要2到4次磁盘IO操作,在当前磁盘技术下意味着查询时间大约在0.02~0.04秒之间。
- **连续存储**:数据按照键值顺序存储在叶子节点上,有利于范围查询。
#### 二、B+树存储容量计算
**知识点概述**:
- **存储单元**:InnoDB存储引擎中,最小的存储单元是页(Page),大小为16KB。
- **数据存储**:假设每条SQL信息占用1KB空间,主键ID为bigint类型(8字节)。
**计算方法**:
1. **两层B+树**:根节点+叶子节点。
- 单个页可存储16行数据(16KB / 1KB = 16行)。
- 根节点每个页可存储约1170个指针(16KB / (8字节 + 6字节) ≈ 1170个)。
- 最多可存储数据行数为:1170 * 16 = 18,720行。
2. **三层B+树**:
- 第一层根节点页可存储约1,170个指针。
- 第二层每个页也可存储约1,170个指针。
- 最多可存储数据行数为:1,170 * 1,170 * 16 ≈ 219,024,000 行(大约是两千万行)。
3. **四层B+树**:
- 第一层根节点页可存储约1,170个指针。
- 第二层每个页也可存储约1,170个指针。
- 第三层每个页也能存储约1,170个指针。
- 最多可存储数据行数为:1,170 * 1,170 * 1,170 * 16 ≈ 2.35亿行。
**结论**:
- 在InnoDB存储引擎中,即使是最简单的两层B+树也能有效存储大量数据。
- 随着树的高度增加,存储容量呈指数级增长,但磁盘IO次数仍然控制在较小范围内。
#### 三、B+树与二叉树、B树的区别及选择原因
**知识点概述**:
1. **二叉树**:每个节点最多有两个子节点,查询效率较高但不适合磁盘存储场景。
2. **B树**:每个节点最多包含m个子节点,具有较好的磁盘IO性能,但比B+树差。
3. **B+树**:结合了B树的优点,并进行了优化改进。
**选择原因**:
- **磁盘IO性能**:相较于二叉树,B+树通过增加节点扇出度减少了树的高度,进而降低了磁盘IO次数。
- **数据存储方式**:B+树的所有实际数据都存储在叶子节点上,而非叶子节点只负责索引。这意味着每个磁盘页能够存储更多的索引信息。
- **查询性能**:B+树的查询必须到达叶子节点才能获取完整数据,在范围查询和排序查询中更加高效。
- **连续存储**:B+树的叶子节点通过指针相互连接,便于实现范围查询和排序。
由于这些特性,B+树被广泛应用于数据库索引设计。它能够更好地适应磁盘存储环境下的高效数据查询需求,尤其在处理大规模数据集时表现出色。
全部评论 (0)


