Skip to content

Latest commit

 

History

History
32 lines (15 loc) · 1.64 KB

Mysql B+树学习.md

File metadata and controls

32 lines (15 loc) · 1.64 KB

Mysql B+树学习

B+树

B+树特点

B+树有几个特点: 1、是多叉树而不是二叉树了,使用多叉的目的是降低树的高度; 2、每个节点不再只是存储一个key了,可以存储多个key; 3、非叶子节点存储key,叶子节点存储key和数据。 4、叶子节点两两相连,为顺序查询提供了帮助

Mysql选择B+树原因

主要原因就是减少读写磁盘的次数

1、B+树的非叶子节点只是存储key,占用空间非常小,因此每一层的节点能索引到的数据范围更加的广。换句话说,每次IO操作可以观看更多的数据。(不理解)

2、叶子节点两两相连,符合磁盘的预读特性(即局部性原理)。如图三中存储50和55的叶子节点,它有个指针指向了60和62这个叶子节点,那么当我们从磁盘读取50和55对应的数据的时候,由于磁盘的预读特性,会顺便把60和62对应的数据读取出来。这个时候属于顺序读取,而不是磁盘寻道了,加快了速度

磁盘(或者说机械硬盘)的特性在于,多次随机读取效率远低于连续读取一大段数据,因为每一次都需要经过寻道。这样B树就被设计为用较少的次数读取磁盘,每次读取较大的块,从而优化整体查询

3、支持范围查询,而且部分范围查询非常高效,原因是数据都是存储在叶子节点这一层,并且有指针指向其他叶子节点,这样范围查询只需要遍历叶子节点这一层,无需整棵树遍历