Mysql底层原理与优化

Mysql底层原理

Mysql底层原理与优化_第1张图片
mysql索引用的就是B+树(B树变种)
存储引擎形容表

MyISAM引擎索引结构
MyISAM的三个文件,frm结构,MYD数据,MYI索引(索引文件和数据文件分离,非聚集)
在这里插入图片描述
Mysql底层原理与优化_第2张图片

Innodb引擎索引结构
对应这两个文件frm是表结构文件,idb既存储索引也存储数据(聚集)
在这里插入图片描述
所谓聚集索引就是叶节点包含了完整的数据记录
Mysql底层原理与优化_第3张图片
Innodb如果不建主键,Mysql会自动选择一个不重复的列去建立主键索引,如果找不到这样的列,Mysql会在后台自动建立一个隐藏列索引,去维护你这个表。并且最好是自增,因为如果不自增会使树整体发生变化,而不是在尾部直接插入,影响效率。

hash索引在范围查找不合适,极不建议使用

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

Mysql底层原理与优化_第4张图片
联合索引叶子节点放索引,data区(上图紫色区)存放其他字段,因为它从左到右递增,联合索引会先比第一个字段,若比出结果不会比后面的字段;比不出来比第二个字段,类似于上图,先比10001这些数字,再比较职位,再比较日期
Mysql底层原理与优化_第5张图片
(重点)最左前缀法则:指联合索引下的select一定要从索引的最左开始不能跳过,上图就只有第三种情况使用了索引通过这种法则联想联合索引底层存储结构,二者可以串联起来。

你可能感兴趣的:(Java企业级项目)