Documentation Home
MySQL 8.0 参考手册  / 第 15 章 InnoDB 存储引擎  / 15.8 InnoDB配置  /  14.8.11 为 InnoDB 配置优化器统计信息

14.8.11 为 InnoDB 配置优化器统计信息

本节介绍如何为表配置持久性和非持久性优化器统计信息InnoDB 。持久优化器统计信息在 MySQL 5.6.2 中引入,并在 MySQL 5.6.6 ( innodb_stats_persistent=ON) 中成为默认值。

持久优化器统计信息在服务器重新启动时保持不变,从而实现更高的 计划稳定性和更一致的查询性能。持久优化器统计信息还提供控制和灵活性以及这些额外的好处:

  • 您可以使用 innodb_stats_auto_recalc 配置选项来控制是否在对表进行大量更改后自动更新统计信息。

  • 您可以将STATS_PERSISTENTSTATS_AUTO_RECALCSTATS_SAMPLE_PAGES子句与 CREATE TABLEand ALTER TABLE语句一起使用来为单个表配置优化器统计信息。

  • mysql.innodb_table_stats您可以在和 mysql.innodb_index_stats表 中查询优化器统计数据 。

  • 您可以查看和 表的last_update列 以了解上次更新统计信息的时间。 mysql.innodb_table_statsmysql.innodb_index_stats

  • 您可以手动修改 mysql.innodb_table_statsmysql.innodb_index_stats表以强制执行特定的查询优化计划或在不修改数据库的情况下测试替代计划。

非持久性优化器统计信息在每次服务器重新启动时和其他一些操作后被清除,并在下一次表访问时重新计算。因此,在重新计算统计信息时可能会产生不同的估计,从而导致执行计划的不同选择和查询性能的变化。

本节还提供有关估计 复杂性的信息,这在尝试在准确的统计信息和 执行时间 ANALYZE TABLE之间取得平衡时可能很有用。ANALYZE TABLE