MySQL进阶(1)MySQL为什么最终要去选择B+Tree?
序言
二叉树存在的问题?
二叉树极端情况会退化为链表
平衡二叉树存在的问题?
平衡二叉树解决了存在线性链表的问题,数据查询的效率好像也还可以,基本能达到O(log2(n)), 那为什么mysql不选择平衡二叉树作为索引存储结构,他又存在什么样的问题呢?
树的高度可能会很高
那有没有一种结构能够解决二叉树的这种问题呢?
有,那就是多路平衡查找树B Tree。
B Tree存在的问题?
在B Tree保证树的平衡的过程中,每次关键字的变化,都会导致结构发生很大的变化,这个过程是特别浪费时间的。
B+Tree
MySQL为什么最终要去选择B+Tree?
主键一般都是数字,想知道string类型的辅助索引是b+ tree中是如何存储的,是转为hash整形? 还是原样存储? 如果是原样存储,在磁盘block中是如何排序的?
原样,比较编码值,比如utf8
资料