21

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

4

5 回答 5

18

我推荐这三行

log_slow_queries
设置变量 = long_query_time=1
日志查询不使用索引

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

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

虽然它肯定不是用于生产,但最后一个选项

日志 = /var/log/mysql/mysql.log

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

于 2008-09-18T13:43:57.340 回答
4

无论何时/您/感觉在您的系统上进行查询都慢得令人无法接受。

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

于 2008-09-18T12:36:35.100 回答
3

将其设置为您喜欢的任何内容。唯一的问题是,在一个股票 MySQL 中,它只能以 1 秒为增量设置,这对某些人来说太慢了。

最常用的生产服务器执行太多查询以记录所有查询。慢日志是一种过滤日志的方式,这样我们就可以看到需要很长时间的日志(大多数查询可能几乎立即执行)。这是一个有点生硬的乐器。

如果您愿意,可以将其设置为 1 秒,这样您可能不会用完磁盘空间或造成性能问题。

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

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

于 2008-09-18T12:36:47.737 回答
3

Peter Zaitsev 发表了一篇关于使用慢查询日志的好文章。他指出很重要的一件事是还要考虑使用某个查询的频率。每天运行一次的报告对于快速来说并不重要。但是经常运行的东西即使需要半秒钟也可能是一个问题。如果没有微慢补丁,您将无法检测到这一点。

于 2008-09-18T21:26:55.073 回答
1

就分辨率而言,它不仅是一种生硬的工具,而且它是 MySQL 实例范围的,因此,如果您有不同的数据库具有不同的性能要求,那么您有点不走运。显然有一些方法可以解决这个问题,但是在设置慢日志设置时记住这一点很重要。

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

于 2008-09-18T13:11:34.487 回答