Mysql为什么使用B+树
2022-12-14 本文已影响0人
垂直居中的句号
- B+树的非叶子节点存储的都是主键,不存储数据,所以每一层存储的索引数量会增加,所以在层高相同的情况下,储存的数据量比B树多,查找的时候磁盘的io次数更少。
对于数据库来说,所有的数据都是存储在磁盘上的,而磁盘io的效率是很低的,特别是在随机磁盘io的一个情况下效率更低,那么树的高度就能够决定磁盘io的一个次数,磁盘io次数越少对性能的提升就越大。
B+树叶节点两两相连可大大增加区间访问性,可使用在范围查询等,而B-树每个节点 key 和 data 在一起,则无法区间查找。
2.范围查找的时候,B+树因为叶子节点是采用双向链表相互连通的,所以只遍历两个节点就可以,而B树因为key和data在一起的,在范围查找时需要遍历所以节点
3.由于所有数据都存储在叶子节点上,所以b+树的磁盘io速度会更加稳定一些。
4.全局扫描能力上,因为B+树是把所有的数据都存在了叶子节点上,只需要扫描叶子节点,而B树可能需要遍历整颗树。