MySQL 8.3 Release Notes
除了空间索引外,InnoDB
索引都是 B-tree 数据结构。空间索引使用 R-trees,它们是多维数据的专门数据结构。索引记录存储在 B-tree 或 R-tree 数据结构的叶页中。默认情况下,索引页的大小为 16KB。页大小由 innodb_page_size
设置确定,当 MySQL 实例初始化时。见 第 17.8.1 节,“InnoDB 启动配置”。
当新的记录被插入到 InnoDB
聚簇索引 中时,InnoDB
尝试留下 1/16 的页面空间以供将来的插入和更新索引记录。如果索引记录以顺序方式(升序或降序)插入,结果索引页将近似 15/16 满。如果记录以随机顺序插入,页将从 1/2 到 15/16 满。
InnoDB
在创建或重建 B-tree 索引时执行批量加载。这 种索引创建方法称为排序索引构建。innodb_fill_factor
变量定义了在排序索引构建期间每个 B-tree 页上的空间百分比,剩余空间保留供将来的索引增长。排序索引构建不支持空间索引。更多信息,请见 第 17.6.2.3 节,“排序索引构建”。innodb_fill_factor
设置为 100 将聚簇索引页的 1/16 空间留给将来的索引增长。
如果 InnoDB
索引页的填充因子低于 MERGE_THRESHOLD
,默认为 50% 如果未指定,InnoDB
尝试收缩索引树以释放页。 MERGE_THRESHOLD
设置适用于 B-tree 和 R-tree 索引。更多信息,请见 第 17.8.11 节,“配置索引页的合并阈值”。