### 15.8.10 为 InnoDB 配置优化器统计信息

[15.8.10.1 配置持久优化器统计参数](innodb-persistent-stats.html)
[15.8.10.2 配置非持久优化器统计参数](innodb-statistics-estimation.html)
[15.8.10.3 估计 InnoDB 表的 ANALYZE TABLE 复杂性](innodb-analyze-table-complexity.html)

本节介绍如何配置持久性和非持久性优化器统计信息`InnoDB`表。

持久的优化器统计信息在服务器重新启动时保持不变，允许更大的[计划稳定性](glossary.html#glos_plan_stability)和更一致的查询性能。持久优化器统计信息还提供控制和灵活性以及这些额外的好处：

-   您可以使用[`innodb_stats_auto_recalc`](innodb-parameters.html#sysvar_innodb_stats_auto_recalc)配置选项，用于控制在对表进行重大更改后是否自动更新统计信息。

-   您可以使用`STATS_PERSISTENT`,`STATS_AUTO_RECALC`， 和`STATS_SAMPLE_PAGES`从句[`创建表`](create-table.html)和[`更改表`](alter-table.html)语句为单个表配置优化器统计信息。

-   您可以在`mysql.innodb_table_stats`和`mysql.innodb_index_stats`表。

-   您可以查看`最后更新`的列`mysql.innodb_table_stats`和`mysql.innodb_index_stats`表以查看上次更新统计信息的时间。

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

    默认情况下启用持久优化器统计功能（[`innodb_stats_persistent=ON`](innodb-parameters.html#sysvar_innodb_stats_persistent)）。

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

    本节还提供有关估计的信息[`分析表`](analyze-table.html)复杂性，这在尝试在准确的统计数据和[`分析表`](analyze-table.html)执行时间处理时间。
