1

我想知道有没有其他方法可以在不记录慢查询的情况下检查我们的慢查询。假设,我有一个非常繁忙的服务器,无法记录太多以节省内存和 I/O。那么,有没有其他方法可以检查我是否有慢查询?我知道,我们可以对查询进行分析,但仍然不确定到底要做什么来确定哪个查询是占用大部分时间和内存的查询。

刚开始mysql管理,不知道如何处理。任何指导将不胜感激。

4

1 回答 1

1

我发现缓慢是导致服务器陷入困境的最佳来源。

建议您开始将 long_query_time 的值设置为适中。这将最小化 I/O 和磁盘空间。如果可以的话,修复它找到的查询。

当您用尽时,降低该设置以找到更多。

使用 pt-query-digest 查找“最差”的查询。

请记住,高值只能找到长查询,即使它们很少见。较低的值会发现频繁运行的快速查询,这些可能是真正的恶棍。

另一种方法是仅短暂或在相对空闲的时间内打开慢日志。您发现的内容可能仍然非常有用。

轶事:在一个系统中,有一个查询WHERE错误,导致它运行 100% CPU。单行修复将 CPU 降至 2%。

另一个轶事:一个特定的查询很快,但运行频繁。一点点算术表明查询不应该像看到的那样频繁发出。当查询可能在循环之外时,它在循环内。

回到你所采取的方向......你可以手动SHOW PROCESSLIST查看经常或缓慢运行的内容。这很乏味,而且是命中注定的。但它可能同时捕获 (1) 缓慢、不频繁的查询和 (2) 快速、频繁的查询。

如果您想发布SHOW VARIABLES;and SHOW GLOBAL STATUS;,我将检查数百个公式,这些公式可能会导致对效率低下的更多了解。

于 2015-05-15T16:26:30.893 回答