美文网首页
MySQL - 存储引擎对索引的组织方式

MySQL - 存储引擎对索引的组织方式

作者: kyo1992 | 来源:发表于2021-04-14 08:30 被阅读0次

MyISAM

MySQL数据以文件形式存放在磁盘,对于MyISAM引擎,每张表由三个文件组成。

  • table.frm:存储表的结构。(frame)
  • table.MYD:存储表的数据。(data)
  • table.MYI:存储表的索引。(index)

MyISAM索引文件和数据文件是分离的(非聚集)

如上图,B+树的叶子节点存储的值是磁盘地址,根据磁盘地址到MYD文件去获取数据。

InnoDB

对于InnoDB引擎,每张表由两个文件组成。

  • table.frm:存储表的结构。(frame)
  • table.ibd:存储表的索引和数据。(index和data)

InnoDB索引文件和数据文件是聚集的

聚集索引
  • 表数据文件本身就是按B+树组织的一个索引结构文件。
  • 聚集索引 - 叶节点包含了完整的数据记录,每个表有且只有一个聚集索引(主键索引),如果建表的时候没有指定主键,MySQL会自动维护一个唯一的隐藏列,以建立聚集索引B+树。所以InnoDB表必须建立主键,并且推荐使用自增的整型主键。
非聚集索引

对于非聚集索引(索引和数据是分离的),叶节点存储的是索引所在行记录的主键,所以根据非聚集索引查找到主键后,需要回表再查找主键的行记录。 只存储主键值,可以保持一致性和减少存储空间。


联合索引
联合索引底层存储结构

例如有三个字段name,age,position组成联合索引,MySQL会根据字段出现先后顺序依次排序,例如先按name排序,name相同再按age排序,根据这个原理,可以应用最左前缀原则优化。

相关文章

  • MySQL和ES的索引对比

    [toc] MySQL索引实现 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,...

  • mysql索引

    mysql 不同引擎索引组织方式不同 MyISAM存储引擎,MyISAM引擎使用B+Tree作为索引结构,叶节点的...

  • MySQL索引实现及优化

    MySQL索引实现 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论...

  • MySQL - 存储引擎对索引的组织方式

    MyISAM MySQL数据以文件形式存放在磁盘,对于MyISAM引擎,每张表由三个文件组成。 table.frm...

  • 索引类型

    一. MYSQL的索引mysql中,不同的存储引擎对索引的实现方式不同,大致说下MyISAM和InnoDB两种存储...

  • 总结mysql索引失效的N种情况

    mysql中,索引是存储引擎实现的,不同的存储引擎索引的工作方式不一样,由于mysql默认的存储引擎为InnoDB...

  • MySQL索引的数据结构

    在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和Inn...

  • MySQL索引实现

    在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和Inn...

  • MySQL 索引和 SQL 调优

    MySQL索引 MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引...

  • 第四章 表 阅读总结

    4.1 索引组织表 在lnnoDB存储引擎中, 表都是根据主键顺序组织存放的, 这种存储方式的表称为索引组织表(...

网友评论

      本文标题:MySQL - 存储引擎对索引的组织方式

      本文链接:https://www.haomeiwen.com/subject/prgwkltx.html