mysql调优

索引的本质

说明:索引是帮助Mysql高效获取数据的排好序的数据结构
索引数据结构

.二叉树
.红黑树
.Hash表
.B-Tree
.B+Tree

1.二叉树数据结构
说明:特性:右边的子元素大于父元素,左边的子元素小于父元素。但是,注意mysql底层并不是用二叉树存储。
image.png
2.红黑树数据结构
说明:本质是一种平衡二叉树,比二叉树效率快很多。
缺点:当存储大量数据时,树的高度没法控制
image.png
3.Hash表
说明:不管数据库表的数据多大,经过一次hash运算,就能算出那个数据的当前磁盘文件地址指针。
缺点:不适用范围查找
4.B-tree
说明:
叶节点具有相同的深度
叶节点的指针为空
节点中的数据索引从左到右递增排列
mysql调优_第1张图片
5.B+tree
说明:(B-Tree变种)
非叶子节点不存储data,值存储索引,可以放更多的索引
叶子节点不存储指针
顺序访问指针,提高区间访问的性能
mysql调优_第2张图片

InnoDB存储引擎索引实现

InnoDB索引实现(聚集)
.表数据文件本身就是按照B-Tree组织的一个索引结构文件
.聚集索引-叶节点包含了完整的数据记录
.为什么InnoDB表必须有主键,并且推荐使用整型的自增主键(因为主键自增减低了叶子节点分裂的发生)
.为什么非主键索引结构叶子节点存储的是主键值(一致性和建设存储空间)。

联合索引

联合索引底层的存储结构

你可能感兴趣的:(mysql)