InnoDB索引的物理结构

348 阅读2分钟

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_factor100个叶子在聚簇索引页的空间1/16的设置免费为未来的指数增长。

如果InnoDB索引页面的填充因子下降到之下MERGE_THRESHOLD(默认情况下为50%,如果未指定),则InnoDB尝试收缩索引树以释放页面。该 MERGE_THRESHOLD设置适用于B树索引和R树索引。有关更多信息,请参见 “为索引页配置合并阈值”

您可以通过 在初始化MySQL实例之前设置配置选项来定义MySQL实例中 所有表空间的页面大小。一旦定义了实例的页面大小,就不能在不重新初始化实例的情况下对其进行更改。支持的大小为64KB,32KB,16KB(默认),8KB和4KB。 InnoDBinnodb_page_size

MySQL 5.7中增加了对32KB和64KB页面大小的支持。有关更多信息,请参阅 innodb_page_size文档。

qrcode_for_gh_3214f9e3470a_258.jpg