MySQL 8.4 Release Notes
17.8.10 配置 InnoDB 优化器统计
本节描述了如何配置 InnoDB 表的持久和非持久优化器统计。
持久优化器统计将在服务器重启后保持不变,提供更好的计划稳定性和查询性能一致性。持久优化器统计还提供了控制和灵活性,带来了以下额外的好处:
-
您可以使用
innodb_stats_auto_recalc
配置选项来控制统计信息是否自动更新,after substantial changes to a table。 -
您可以使用
STATS_PERSISTENT
、STATS_AUTO_RECALC
和STATS_SAMPLE_PAGES
子句与CREATE TABLE
和ALTER TABLE
语句来配置优化器统计信息单个表。 -
您可以在
mysql.innodb_table_stats
和mysql.innodb_index_stats
表中查询优化器统计数据。 -
您可以查看
last_update
列中的mysql.innodb_table_stats
和mysql.innodb_index_stats
表,以了解最后一次更新统计信息的时间。 -
您可以手动修改
mysql.innodb_table_stats
和mysql.innodb_index_stats
表,以强制特定的查询优化计划或测试备选方案,而不需要更改数据库。
持久优化器统计信息功能默认启用(innodb_stats_persistent=ON
).
非持久优化器统计信息在每次服务器重启和一些其他操作后被清除,并且在下一次表访问时重新计算。因此,在重新计算统计信息时可能会产生不同的估算,从而导致执行计划的不同选择和查询性能的变化。
本节还提供了关于估算ANALYZE TABLE
复杂性的信息,这可能对尝试在准确统计和ANALYZE TABLE
执行时间之间取得平衡非常有用。