Mysql 索引与数据结构

Innodb索引存储数据结构 :B+树

特点:

1 只有叶子节点存储真实数据,其余节点只存放 index关键字+指针 。让节点能存放更多index、减少层高。  

  且叶子节点存储是有序的链表,有助于范围查找和排序。

2 层高影响命中一行数据的IO操作次数。命中一个节点相当于一次IO操作。

3 每个节点16k。索引列的数据类型决定每个节点存放多少key。integer为4字节、bigint为8字节。

  节点存储的index越多,同样数据量下树的层数越低,IO操作次数越少性能越好。

  平均2000w一般数据index,b+树能保持在3-4层结构。

高度计算:https://www.cnblogs.com/songpingyi/p/10730156.html

4 数据发生变化时,树通过分裂保证结构正确性。

5 innodb主键索引的叶子节点才会保存数据地址,其他索引叶子节点只保存主键索引。

若没有设置主键,则mysql使用隐藏列rowid作为主键。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章