Mysql 索引底层数据结构与算法

2019-08-22  本文已影响0人  七月_JulyFY

索引的本质

索引是帮助MySQL高效获取数据的==排好序==的==数据结构==

索引数据结构有以下几种:(==Mysql 最终使用 B+ Tree==)

二叉树 (第二图的时候高度会很高)

红黑树----平衡二叉树

B-Tree (一个节点可以放多个索引,一般一个节点最大16 kB)

叶节点具有相同的深度,叶节点的指针为空所有索引元素不重复节点中的数据索引从左到右递增排列

B+Tree(B-Tree变种)

MyISAM存储引擎索引实现

InnoDB存储引擎索引实现

就算没有设计主键,mysql 会自动将唯一的字段作为主键,当没有唯一字段时,后台会自己生成一个 rowid 的字段作为主键,只是看不到而已.整型是为了主键索引便于比较。自增当然也是为了让索引利于存放,比如:新增一条数据,索引直接加在后面,而不需要再去遍历索引树来判断到底该放在哪里,大大地提升了效率。
如果非主键索引的叶子节点也存完整的数据时,比如你更新一条数据之前需要将主键索引和非主键索引的那个数据更改完才能进行更新操作(相当于是一个分布式事物了,性能大大降低). 我们只需要通过存储的主键进行定位即可。
主键索引
非主键索引

联合索引的底层存储结构长什么样?

上一篇 下一篇

猜你喜欢

热点阅读