B树,B+树:
https://www.jianshu.com/p/332caf8bed3a
https://blog.youkuaiyun.com/qq_30431719/article/details/81360169
一个M阶B树:
- 根节点为空至少有一个关键字和两个子节点;
- 非根节点有k个关键字[⌈M/2-1⌉,M-1],i个子节点[⌈M/2⌉,M];
一个M阶B+树:
- 根节点为空至少有一个关键字和两个子节点;
- 非根节点有k个关键字[⌈M/2⌉,M],i个子节点[⌈M/2⌉,M];
预读:磁盘预读的长度一般为页的整倍数; 数据库系统的设计者巧妙利用了磁盘预读原理,将一个节点的大小设为等于一个页,这样每个节点只需要一次I/O就可以完全载入 。
B+树的优点:
1、B+树的磁盘读写代价更低:
B+树的所有根节点都不带有任何数据信息,只有索引信息,所有数据信息全部存储在叶子节点里,这样,整个树的每个节点所占的内存空间就变小了,读到内存中的索引信息就会更多一些,相当于减少了磁盘IO次数;
2、B+树的数据信息遍历更加方便:
B+树只要遍历叶子节点就可以实现整棵树的遍历,而B树不支持这样的操作(或者说效率太低);
3、B+树的查询效率更加稳定:
由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。
InnoDB和MyISAM主键索引的实现区别,一个聚集一个非聚集:

被折叠的 条评论
为什么被折叠?



