除空间索引外,InnoDB 索引都是B-tree数据结构。空间索引使用 R-trees,这是用于索引多维数据的专用数据结构。索引记录存储在其 B 树或 R 树数据结构的叶页中。索引页的默认大小为 16KB。页面大小由 innodb_page_sizeMySQL 实例初始化时的设置决定。请参阅 第 15.8.1 节,“InnoDB 启动配置”。
当新记录插入InnoDB 聚集索引时, InnoDB尝试留出 1/16 的页面空闲以供将来插入和更新索引记录。如果索引记录按顺序(升序或降序)插入,则生成的索引页大约是 15/16 满。如果以随机顺序插入记录,则页面从 1/2 到 15/16 满。
InnoDB在创建或重建 B 树索引时执行批量加载。这种创建索引的方法称为排序索引构建。该 innodb_fill_factor变量定义在排序索引构建期间填充的每个 B 树页面上的空间百分比,剩余空间保留用于未来索引增长。空间索引不支持排序索引构建。有关更多信息,请参阅 第 15.6.2.3 节,“排序索引构建”。innodb_fill_factor设置为 100 会保留聚集索引页中 1/16 的空间以供将来索引增长使用 。
如果索引页面的填充因子InnoDB低于MERGE_THRESHOLD50%(如果未指定,则默认为 50%),则InnoDB尝试收缩索引树以释放页面。该 MERGE_THRESHOLD设置适用于 B-tree 和 R-tree 索引。有关更多信息,请参阅 第 15.8.11 节,“为索引页配置合并阈值”。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




