繁体   English   中英

MySQL慢查询日志 - 速度有多慢?

[英]MySQL slow query log - how slow is slow?

你发现什么是mysql慢查询日志参数的最佳设置,为什么?

我推荐这三行

log_slow_queries
set-variable = long_query_time=1
log-queries-not-using-indexes

第一个和第二个将在一秒钟内记录任何查询。 正如其他人已经指出,如果你是在你的网站上以高交易率拍摄,那么一秒钟的查询已经相去甚远,但我发现它发现了一些真正的WTF; 查询应该很快,但对于它运行的任何数据组合都不是。

最后一个将记录任何不使用索引的查询。 除非你做数据仓库任何常见的查询应该有你能找到的最佳索引,所以要注意它的输出。

虽然它肯定不适合生产,但最后一个选择

log = /var/log/mysql/mysql.log

将记录所有查询,如果您尝试调整特定页面或操作,这将非常有用。

无论何时/您/感觉对您的系统上的查询来说都是慢得令人无法接受的。

这取决于您运行的查询类型和系统类型; 如果某个后端报告系统执行复杂的数据挖掘等延迟并不重要,那么花费几秒钟的查询可能并不重要,但在面向用户的系统上可能完全不可接受,而该系统预计会立即返回结果。

把它设置为你喜欢的任何东西。 唯一的问题是在库存MySQL中,它只能以1秒的增量设置,这对某些人来说太慢了。

大多数使用频繁的生产服务器执行太多查询以将其全部记录下来。 慢日志是一种过滤日志的方式,以便我们可以看到需要很长时间的日志(大多数查询可能几乎立即执行)。 这是一个钝器。

如果你愿意,将它设置为1秒,你可能不会因为这样做而耗尽磁盘空间或产生性能问题。

这实际上是关于启用慢速日志的风险 - 如果您觉得它可能导致进一步的光盘或性能问题,请不要这样做。

当然,您可以在非生产服务器上启用慢速日志并将模拟负载通过,但这绝不会完全相同。

Peter Zaitsev发表了一篇关于使用慢查询日志的好文章 他注意到的一件事是重要的是还要考虑使用某个查询的频率。 每天运行一次的报告并不重要。 但即使需要半秒钟,经常运行的东西也可能是个问题。 没有微小的补丁,你无法检测到它。

就解决方案而言,它不仅是一种钝器,而且它是MySQL实例范围广泛的,所以如果你有不同的性能要求不同的数据库,那你就有点不走运了。 显然有很多方法,但在设置慢速日志设置时要记住这一点很重要。

除了应用程序的性能要求之外,另一个需要考虑的因素是您要记录的内容。 您是否使用日志来捕获会威胁数据库实例(例如导致死锁或笛卡尔连接的稳定性)的查询或影响特定用户性能的查询以及可能需要稍微调整的查询? 这将影响您设置阈值的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM