关于 innodb_stats_on_metadata 的设置问题
这篇讲的是 MySQL InnoDB 存储引擎中一个容易被忽略却影响重大的参数——`innodb_stats_on_metadata`。作者从实际运维场景出发,详细说明了开启该参数后,每次执行 `SHOW TABLE STATUS` 或访问 `INFORMATION_SCHEMA` 中的统计表时,InnoDB 都会重新计算索引统计信息。 这一行为在频繁查询元数据的监控或管理场景下,可能导致大量的额外 I/O 和 CPU 开销,进而影响数据库性能。文章对比了该参数在 ON(默认)和 OFF 两种状态下的行为差异,并给出了明确的调优建议:对于绝大多数 OLTP 应用,建议将其设置为 OFF,以避免不必要的性能损耗。 文中还结合了具体的测试数据,展示了关闭该参数后,在特定负载下系统响应时间的显著改善。最后,文章指出,即便关闭了自动更新,我们仍可通过手动执行 `ANALYZE TABLE` 来按需更新统计信息,从而在性能与统计准确性之间取得平衡。