MySQL索引-数据结构与应用

Posted 伽罗太华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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索引适合写多、读少、并发高的表


以上是关于MySQL索引-数据结构与应用的主要内容,如果未能解决你的问题,请参考以下文章

mysql数据库索引优化与实践

mysql索引与pymysql模块

8-5 数据库练习题:Mysql索引与 Redis 应用

8-5 数据库练习题:Mysql索引与 Redis 应用

MySQL数据库索引的4大类型以及相关的索引创建

MySQL(索引原理与慢查询优化 )