我想知道有没有其他方法来检查我们的慢速查询而不记录慢速查询。假设,我的服务器非常繁忙,无法进行大量的日志记录以节省内存和I/O。那么,有没有其他方法可以检查我是否有一个缓慢的查询?我知道,我们可以对查询进行分析,但仍然不确定应该做什么来确定哪个查询占用了大部分时间和内存。
刚刚开始mysql管理,不知道如何处理这个问题。如有任何指导,将不胜感激。
发布于 2015-05-15 16:26:30
我发现缓慢是服务器陷入困境的最佳来源。
建议您开始将适度高值的long_query_time。这将使I/O和磁盘空间最小化。如果可以的话,修复它找到的查询。
当你已经精疲力竭时,降低设置以找到更多。
使用pt-查询摘要查找“最差”查询。
请记住,高值只会查找长查询,即使它们很少。较低的值会找到频繁运行的快速查询,而这些查询可能是真正的坏蛋。
另一种方法是只在较短的时间或相对空闲的时间打开慢速日志。你发现的可能仍然是非常有用的。
轶事:在一个系统中,有一个查询,其中的WHERE是错误的,以至于它运行着100%的CPU。单行修复将CPU降低到2%.
另一个轶事是:一个特定的查询速度快,但运行频繁。有一点算术表明,查询不应该像看到的那样频繁地发出。当查询可能在循环之外时,查询就在循环中。
回到你走的方向..。您可以手动执行SHOW PROCESSLIST来查看哪些是频繁运行的,哪些是缓慢运行的。这是乏味的,也是命中注定的。但它可能同时捕获(1)缓慢、不频繁的查询,以及(2)快速、频繁的查询。
如果您想发布SHOW VARIABLES;和SHOW GLOBAL STATUS;,我将检查几百个公式,这些公式可能会使您更深入地了解效率低下的问题。
https://stackoverflow.com/questions/30260792
复制相似问题