MySQL 8.4 发行说明
本节介绍如何为 InnoDB
表配置持久和非持久优化器统计信息。
持久优化器统计信息在服务器重启时会保留,从而实现更高的 计划稳定性 和更一致的查询性能。持久优化器统计信息还通过以下额外好处提供控制和灵活性
可以使用
innodb_stats_auto_recalc
配置选项来控制在对表进行重大更改后是否自动更新统计信息。可以使用
STATS_PERSISTENT
、STATS_AUTO_RECALC
和STATS_SAMPLE_PAGES
子句与CREATE TABLE
和ALTER TABLE
语句一起为单个表配置优化器统计信息。可以在
mysql.innodb_table_stats
和mysql.innodb_index_stats
表中查询优化器统计信息数据。可以查看
mysql.innodb_table_stats
和mysql.innodb_index_stats
表的last_update
列,以查看统计信息最后更新的时间。可以手动修改
mysql.innodb_table_stats
和mysql.innodb_index_stats
表,以强制使用特定查询优化计划,或者在不修改数据库的情况下测试备选计划。
持久优化器统计信息功能默认启用 (innodb_stats_persistent=ON
).
非持久优化器统计信息在每次服务器重启后以及在某些其他操作之后会被清除,并在下次访问表时重新计算。因此,在重新计算统计信息时可能会生成不同的估计值,从而导致执行计划的选择不同,以及查询性能的差异。
本节还提供有关估计 ANALYZE TABLE
复杂度的信息,这在尝试在准确的统计信息和 ANALYZE TABLE
执行时间之间取得平衡时可能很有用。