mysql的Innodb为什么使用B+树
不同数据结构的优缺点
hash:查找快,但是不适合范围查找
有序数组:查找和范围查找都很快,但是插入就需要移动之后的所有数据
二叉树:二分查找法,会有左倾或者右倾的情况,且不适合做范围查询
平衡二叉树:避免的左倾和右倾,但是数据量大的时候,树高会很高,也就是IO次数会很多
B-Tree:相比平衡二叉树,树高是降低了,但是还是不适合范围查询,范围查询需要遍历所有数据
B+Tree:将所有数据都放到叶子节点,且叶子节点形成一个列表(可以做范围查询),非叶子节点只放键值,每个数据叶中的有效数据就多了,可以减少IO次数。
N叉树的N能调整吗?
N和数据页大小和key大小有关,我们可以调整数据页的大小,也可以调整key的大小,比如将普通索引设置为前缀索引。
数据页内部是一个有序数组,通过二分法查找