01-存储引擎

存储引擎是形容表的:不同的存储引擎对应的表结构不一样

01-存储引擎

MyISAM存储引擎表结构:MyISAM索引文件和数据文件是分离的(非聚集索引)

  • MySQL Server 8.0
    01-存储引擎
    sdi:Serialized Dictionary Information的缩写: 表的元数据信息

  • MySQL Server 8.0之前:
    01-存储引擎
    frm文件:framework:存储表结构,框架
    MYD文件:MyISAM+data:数据行记录
    MYI文件:MyISAM+index:存储索引字段
    01-存储引擎

InnoDB索引实现(聚集索引:叶节点包含了完整的数据记录)

表数据文件本身就是按B + Tree组织的一个索引结构文件

MySQL Server 8.0:只有ibd文件
01-存储引擎
MySQL Server 8.0之前:
01-存储引擎
frm文件:framework:存储表结构,框架
ibd文件:存放索引和数据文件
01-存储引擎

面试题:

为什么InnoDB表必须有主键,并且推荐使用整型的自增主键?
  • MySQL数据结构为B+Tree,如果没有主键,无法存放数据
  • 如果不指定主键,InnoDB会自动选择一个不重复的字段为该表主键。
  • 如果表字段都有重复的,MySQL会再后台增加一个rowid字段(该字段看不到,但查询的时候还是按照该字段遍历),来维护表结构。
  • 查询时整形之间遍历比较快,如果时字符串,会先转化成ASCII,再从左到右一个一个比对。
  • 整形占用空间也比较小,占用资源少
为什么非主键索引结构叶子节点存储的是主键值?
  • 一 致性和节省存储空间
    01-存储引擎