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