我们在生产环境中使用的是MySql 5.5。是否建议在生产环境中启用慢查询日志?这样做的性能影响是什么?我参考了官方文档(这里),但没有提到性能问题。
我们在生产环境中使用的是MySql 5.5。是否建议在生产环境中启用慢查询日志?这样做的性能影响是什么?我参考了官方文档(这里),但没有提到性能问题。
我强烈建议在生产环境中开启慢查询日志。无论您在开发、QA或预生产环境中做了多少记录,都不如在生产环境中更好地了解真实的性能情况。根据我的经验,性能损耗并不显著。
如果性能损耗变得显著,您可以通过将慢查询日志保存在不同的磁盘或磁盘阵列上来提高性能。
long_query_time
动态变量帮助 MySQL 确定要写入慢查询日志中的内容。如果您的 long_query_time
为 2 秒,并且您看到整堆查询被记录在慢查询日志中,您可以使用类似于 SET GLOBAL long_query_time=10
的方法提高 long_query_time
或者在 my.cnf 中更改它并重新启动 MySQL。
我喜欢将 long_query_time 设置为约 3 秒,并查看记录了什么,然后及时解决缓慢的问题。之后我会将其降低到 2 秒并保持在那里。记录是一回事,但采取记录行动——如解决长时间运行的查询、使用 iostat -x
或 sar
监控 IO 等——也是至关重要的。
我从未发现使用慢查询日志会有任何性能损失,因此我认为可以安全地打开它。数据库仅保留一个额外的日志文件,其中将存储超过某个运行时间(可配置)的查询。之后,您可以通过分析慢查询来解决问题,例如执行以下操作:
EXPLAIN SELECT ... FROM ...