14.8.11 为 InnoDB 配置优化器统计信息
本节介绍如何为InnoDB
table 配置持久性和非持久性优化器统计信息。
持续的优化程序统计信息在服务器重新启动后会保留下来,从而实现更高的plan stability和更一致的查询性能。持久性优化器统计信息还提供控制和灵 Active,并具有以下其他优点:
-
您可以使用innodb_stats_auto_recalc配置选项来控制在对 table 进行重大更改后是否自动更新统计信息。
-
您可以将
STATS_PERSISTENT
,STATS_AUTO_RECALC
和STATS_SAMPLE_PAGES
子句与CREATE TABLE和ALTER TABLE语句一起使用,以配置各个 table 的优化器统计信息。 -
您可以在
mysql.innodb_table_stats
和mysql.innodb_index_stats
table 中查询优化器统计数据。 -
您可以查看
mysql.innodb_table_stats
和mysql.innodb_index_stats
table 的last_update
列,以查看统计信息的最新更新时间。 -
您可以手动修改
mysql.innodb_table_stats
和mysql.innodb_index_stats
table,以强制执行特定的查询优化计划或测试替代计划,而无需修改数据库。
默认情况下,持久性优化器统计信息功能已启用(innodb_stats_persistent=ON)。
非持久性优化器统计信息将在每次服务器重新启动时以及执行某些其他操作后清除,并在下次访问 table 时重新计算。结果,在重新计算统计信息时可能会产生不同的估计,从而导致执行计划的选择不同以及查询性能的变化。
本节还提供有关估计ANALYZE TABLE复杂度的信息,这在尝试在准确的统计信息和ANALYZE TABLE执行时间之间取得平衡时可能很有用。