Documentation Home
MySQL 8.0 参考手册  / 第 15 章 InnoDB 存储引擎  / 15.6 InnoDB 磁盘结构  / 15.6.2 索引  /  14.6.2.2 InnoDB索引的物理结构

14.6.2.2 InnoDB索引的物理结构

除空间索引外,InnoDB 索引都是B 树数据结构。空间索引使用 R 树,这是用于索引多维数据的专用数据结构。索引记录存储在其 B 树或 R 树数据结构的叶页中。索引页的默认大小为 16KB。页面大小由 innodb_page_sizeMySQL实例初始化时的设置决定。请参阅 第 14.8.1 节,“InnoDB 启动配置”

将新记录插入InnoDB 聚簇索引时, InnoDB尝试留出 1/16 的页面以供将来插入和更新索引记录。如果按顺序(升序或降序)插入索引记录,则生成的索引页大约为 15/16 满。如果记录以随机顺序插入,则页面从 1/2 到 15/16 满。

InnoDB在创建或重建 B 树索引时执行批量加载。这种创建索引的方法称为排序索引构建。该 innodb_fill_factor变量定义了在排序索引构建期间填充的每个 B 树页面空间的百分比,剩余空间保留用于未来的索引增长。空间索引不支持排序索引构建。有关详细信息,请参阅 第 14.6.2.3 节,“排序索引构建”。设置为 100 时,聚集索引页中有 innodb_fill_factor1/16 的空间可用于将来的索引增长。

如果索引页面的填充因子InnoDB低于MERGE_THRESHOLD,如果未指定,默认情况下为 50%,则InnoDB尝试收缩索引树以释放页面。该 MERGE_THRESHOLD设置适用于 B 树和 R 树索引。有关详细信息,请参阅 第 14.8.12 节,“为索引页配置合并阈值”