深入理解Mysql索引的底层数据结构 B+ Tree (1)

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第1张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第2张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第3张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第4张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第5张图片

 深入理解Mysql索引的底层数据结构 B+ Tree (1)_第6张图片

关键字的个数等于路的个数减1。

一个二叉树节点可以存储4kb大小的数据,假如关键字是整型的一个关键字占用4byte,其他数据冗余4个字节

4 kb = 4*1024 byte = 4096 byte。

4096/8 = 512 也就是说一个节点中可以存储512个关键字。

多路平衡查找树如何保证绝对的平衡?

分裂

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第7张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第8张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第9张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第10张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第11张图片

辅助索引最后子节点存储的并不是最后的数据或者数据的地址而是对应的主键索引。为何要这样做?

B+ 树是绝对平衡树,那么新增或者删除会导致节点的分裂移动从而导致子必须同时修改子节点的数据区。如果有多个索引这样就会增加索引的维护成本。

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第12张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第13张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第14张图片

离散性差那么索引就不知道如何匹配,还不如全表扫描

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第15张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第16张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第17张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第18张图片

深入理解Mysql索引的底层数据结构 B+ Tree (1)_第19张图片

 

转载于:https://www.cnblogs.com/wangkaihua/p/10215028.html

你可能感兴趣的:(数据结构与算法,数据库)