1.平衡二叉树
- 平衡二叉树、红黑树…磁盘IO次数过多
- 平衡二叉树、红黑树…无法利用磁盘预读提前缓存数据
2.B树
-
先说一下B树和B+树 区别
-
B+树只有叶子结点存放真实数据,非叶子结点只存放主键最小值和数据页页数,二级索引…另外算
B树是叶子结点和非叶子结点都存放真实数据
-
B+树的叶子结点是通过链表相连接的,而B树是没有的
-
B树因为非叶子结点也会存储真实数据,导致B树的高度 > B+树的高度
-
-
B树
- B+树
- 拓展 B*树
- 为什么选B+树不选B树
- 查找稳定性,B+树的查找的事件复杂度一直是(logn),而B树的查找的事件复杂度是O(1)-O(logn),B+树查找效率稳定
- 范围预读,B+树的叶子结点是通过链表连接的,而且是有序的,所以在读取B+树的数据时,是可以将一定范围内的数据全读出来
- 磁盘IO次数,B树的高度高,磁盘IO次数多,B+树的高度稳定,要么2要么3,磁盘IO次数少,性能高