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

资料

深入理解MySQL索引之B+Tree(转载)

 

posted @ 2021-04-05 10:02  ~沐风  阅读(98)  评论(0编辑  收藏  举报