你发现什么是mysql慢查询日志参数的最佳设置,为什么?
答案 0 :(得分:18)
我推荐这三行
log_slow_queries set-variable = long_query_time=1 log-queries-not-using-indexes
第一个和第二个将在一秒钟内记录任何查询。正如其他人已经指出,如果你是在你的网站上以高交易率拍摄,那么一秒钟的查询已经相去甚远,但我发现它会出现一些真实的WTF;查询 应该快,但对于它运行的任何数据组合都不是。
最后一个将记录任何不使用索引的查询。除非您进行数据仓库,否则任何常见查询都应该具有您可以找到的最佳索引,因此请注意其输出。
虽然它肯定不适合生产,但最后一个选项
log = /var/log/mysql/mysql.log
将记录所有查询,如果您尝试调整特定页面或操作,这将非常有用。
答案 1 :(得分:4)
无论何时/你觉得你的系统上的查询速度慢得令人无法接受。
这取决于您运行的查询类型和系统类型;如果某个后端报告系统执行复杂的数据挖掘等延迟并不重要,那么花费几秒钟的查询可能并不重要,但在面向用户的系统上可能完全不可接受,而该系统预计会立即返回结果。 / p>
答案 2 :(得分:3)
将其设置为您喜欢的任何内容。唯一的问题是在库存MySQL中,它只能以1秒的增量设置,这对某些人来说太慢了。
大多数使用频繁的生产服务器执行的查询太多,无法全部记录。慢日志是一种过滤日志的方式,以便我们可以看到需要很长时间的日志(大多数查询可能几乎立即执行)。这是一种钝器。
如果您愿意,请将其设置为1秒,这样做可能不会耗尽磁盘空间或造成性能问题。
这实际上是关于启用慢速日志的风险 - 如果您觉得它可能导致进一步的光盘或性能问题,请不要这样做。
当然,您可以在非生产服务器上启用慢速日志并将模拟负载放入,但这绝不会完全相同。
答案 3 :(得分:3)
Peter Zaitsev发布了关于使用慢查询日志的nice article。他注意到的一件事是重要的是还要考虑使用某个查询的频率。每天运行一次的报告并不重要。但即使需要半秒钟,经常运行的东西也可能是个问题。如果没有微流补丁,你就无法检测到它。
答案 4 :(得分:1)
就解决方案而言,它不仅是一种钝器,而且它是MySQL实例范围广泛的,所以如果你有不同的性能要求不同的数据库,那你就有点不走运了。显然有很多方法,但在设置慢速日志设置时要记住这一点很重要。
除了应用程序的性能要求之外,另一个要考虑的因素是您尝试记录的内容。您是否使用日志来捕获会威胁数据库实例(例如导致死锁或笛卡尔连接的稳定性)的查询或影响特定用户性能的查询以及可能需要稍微调整的查询?这将影响您设置阈值的位置。