B+树的特点
- B+树是一棵平衡树,根节点到叶子节点长度一致,查询效率高。
- B+树所有关键字都存储在叶子节点上,范围查询只需要遍历一遍叶子节点即可。
- B+树叶子节点按照关键字大小顺序存放,可以支持按照关键字大小进行快速排序。
- B+树叶子结点使用指针连接子节点,支持范围查询跟倒序查询。
- B+树叶子节点之间通过双向链表连接,方便范围查询
B+树的优点
- 支持范围查询:进行范围查询,只需根节点一直遍历到子节点,数据存储叶子节点,叶子节点又有指针连接,方便范围查询。
- 支持排序:叶子节点按照关键字顺序存储,支持快速排序操作,提高效率。
- 存储更多索引数据:叶子节点只存储索引关键字,不存储实际数据,因此可存储更多索引。
- 节点分裂合并时,io操作少:叶子结点大小固定,而且节点大小一般设置为一页的大小,使得节点分裂或合并,只需要读取跟写入一页。
- 利于磁盘预读:由于节点大小固定,可以一次性读取多个节点到内存,减少IO操作次数,提高查询效率。
- 利于缓存:非叶子节点只存储指向子节点的指针,不存储数据,使得缓存能够容纳更多索引数据,提高缓存的命中率,增加查询速度。