mysql索引B+树

一,InnoDB索引实现

1、表数据文件本身就是按照B+Tree组织的一个索引结构文件
  mysql默认储存目录为安装下的data目录,每个库对应一个文件夹(跟库名一样)
  存放文件为格式为 .frm、.ibd文件,frm存储表结构,ibd则存储的是索引就数据,较高的版本只有ibd文件了(包含了表结构索引数据)。
2、聚集索引-叶子节点包含了完整的数据记录
3、innoBD表必须使用主键,并且推荐使用整型自增主键
  如果表不创建主键mysql底层会自动创建隐示主键
  推荐使用整型,因为整型不用通过类型转换可以直接比较
4、非主键索引的叶子节点存放的索引值和是主键值
  每个节点存放的是索引列的值,非主键索引不具备唯一性,需要找到叶子节点主键进行回表取数据(根据找到的主键值在进行聚集索引取数据)
5、每个节点存放的默认大小16KB(可以调整不建议调整),可以使用命令查看当前大小
  show global status like 'Innodb_page_size'
6、每次启动mysql服务默认会将索引的跟节点和子节点读取存放到内存,
7、所有索引都是按小到大顺序依次排列,提高查找性能,每个节点用二分查找方式
8、叶子节点的双向箭头两边都有一块空间用于存放边联数据地址,
9、下图里面的地址是下级节点物理地址,


聚集索引
非聚集索引
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容