14.8.2.2 InnoDB索引的物理结构

原文:https://dev.mysql.com/doc/refman/5.7/en/innodb-physical-structure.html

14.8.2.2 The Physical Structure of an InnoDB Index

除空间索引外,InnoDB索引都是使用B-tree.空间索引使用R-tree,R-tree是多维度的特殊数据结构.索引记录存储在叶子节点上,默认索引的页大小为16KB.

当生成InnoDB聚集索引时,InnoDB会为后续的插入和更新预留1/16页空间.如果数据是按顺序插入的(升序或降序),此时页的存储会达到15/16.如果是随机插入,页的使用率从1/2到15/16.

InnoDB在创建或重建B-tree索引时负载会很高.这种创建索引的方式成为排序索引构建.innodb_fill_factor定义了数据占页的百分比,剩余空闲空间为以后的插入和更新数据预留.空间索引不支持排序索引构建.innodb_fill_factor设置100表示在页上空闲1/16.

如果InnoDB索引页的数据占比低于MERGE_THRESHOLD(默认50%),引擎将尝试将数据分配到邻居节点并释放当前节点.MERGE_THRESHOLD配置对 B-tree and R-tree都有效.

所有的表空间都按innodb_page_size设置的值生成相应大小的页,该配置只能在MySQL初始化实例之前设置才有效.该值一旦定义,只能通过重新初始化MySQL实例才能修改.页支持的大小:64KB, 32KB, 16KB (default), 8KB, and 4KB,可以通过设置innodb_page_size为64k, 32k, 16k, 8k, and 4k来指定相应的页大小.

从MySQL 5.7开始页支持32KB和64KB.

如果MySQL在启动时制定了InnoDB引擎的页大小,那么数据文件和日志文件不能使用不同的页大小。

你可能感兴趣的:(mysql)