MySQL 8.4 Release Notes
17.6.2.2 InnoDB 索引的物理结构
除了空间索引外,InnoDB
索引都是B-树数据结构。空间索引使用R-树,这是专门为多维数据的索引设计的数据结构。索引记录存储在其B-树或R-树数据结构的叶子页中。默认索引页大小是16KB。页面大小由innodb_page_size
设置确定,当MySQL实例初始化时。请参阅第17.8.1节,“InnoDB启动配置”。
当将记录插入到InnoDB
的聚集索引时,InnoDB
尝试留下1/16页的空间,以便于将来的插入和更新索引记录。如果索引记录顺序插入(升序或降序),则生成的索引页约为15/16满。如果记录插入随机顺序,则页面从1/2到15/16之间。
InnoDB
在创建或重建 B 树索引时执行 bulk 加载操作,这种索引创建方法称为排序索引构建。变量innodb_fill_factor
定义了在排序索引构建中每个 B 树页面填充的百分比,剩余空间保留用于未来的索引增长。排序索引构建不支持空间索引。更多信息,请见第17.6.2.3节,“Sorted Index Builds”。设置innodb_fill_factor
为100将留下聚簇索引页面的1/16空间用于未来的索引增长。
如果InnoDB
索引页面的填充因子低于默认值50%(或指定的值),即MERGE_THRESHOLD
,InnoDB
将尝试收缩索引树以释放页面。MERGE_THRESHOLD
设置适用于 B 树和 R 树索引。更多信息,请见第17.8.11节,“Configuring the Merge Threshold for Index Pages”。