InnoDB索引的物理结构
除空间索引外,InnoDB
索引是B树数据结构。空间索引使用 R树,R树是用于索引多维数据的专用数据结构。索引记录存储在其B树或R树数据结构的叶页中。索引页的默认大小为16KB。
将新记录插入到InnoDB
聚集索引中时,请 InnoDB
尝试使页面的1/16空闲,以备将来插入和更新索引记录。如果按顺序插入索引记录(升序或降序),则所得到的索引页大约为15/16。如果以随机顺序插入记录,则页面的容量为1/2到15/16。
InnoDB
在创建或重建B树索引时执行批量加载。这种索引创建方法称为排序索引构建。该 innodb_fill_factor
配置选项定义的空间作为排序指标构建过程中填充,为今后指数增长预留的剩余空间每个B树页的百分比。空间索引不支持排序索引构建。有关更多信息,请参见 “排序的索引构建”。一个 innodb_fill_factor
100个叶子在聚簇索引页的空间1/16的设置免费为未来的指数增长。
如果InnoDB
索引页面的填充因子下降到之下MERGE_THRESHOLD
(默认情况下为50%,如果未指定),则InnoDB
尝试收缩索引树以释放页面。该 MERGE_THRESHOLD
设置适用于B树索引和R树索引。有关更多信息,请参见 “为索引页配置合并阈值”。
您可以通过 在初始化MySQL实例之前设置配置选项来定义MySQL实例中 所有表空间的页面大小。一旦定义了实例的页面大小,就不能在不重新初始化实例的情况下对其进行更改。支持的大小为64KB,32KB,16KB(默认),8KB和4KB。 InnoDB
innodb_page_size
MySQL 5.7中增加了对32KB和64KB页面大小的支持。有关更多信息,请参阅 innodb_page_size
文档。