MySQL索引-数据结构与应用
概念
页:MySQL最小存储单元,大小为16KB
单个索引数据中的数据大小不超过16B
树高:索引树的高度,即层级个数;一页可以存储1024个索引数据,那么3个树高的表,可以存放1024*1024*1024行数据;当然树高是动态的。
索引分唯一索引、单列索引、联合索引
索引类型有Btree、Hash
数据结构
Hash索引,首先计算索引列的Hash值,然后将Hash值与行数据以键值对的形式存放到Hash表中。
Btree索引分MyISAM、InnoDB两种结构
MyISAM:查询到索引后,根据其存储的磁盘位置找到行数据;特点是所有行数据的磁盘位置与每个索引都是一一对应的关系、不具有原子性、不支持事务、不支持外键。数据结构如下图
InnoDB:查询到索引后,直接在节点中获取行数据;特点是叶子节点与所有行数据都是一一对应的关系、支持事务、支持外键。数据结构如下图
总结
Hash索引适合行数据不重复的情况,即唯一索引。
Btree的MyISAM索引适合写少、读多的单表。
Btree的InnoDB索引适合写多、读少、并发高的表