我想知道有没有其他方法来检查我们的慢查询而不记录慢查询。假设,我有一个高度繁忙的服务器无法记录太多以节省内存和I / O.那么,有没有其他方法可以检查我是否有慢查询? 我知道,我们可以对查询进行分析,但仍然不确定究竟要做什么来确定哪个查询占用了大部分时间和内存。
刚刚启动mysql管理,不知道如何处理这个问题。任何指导都将受到高度赞赏。
答案 0 :(得分:1)
我发现缓慢成为阻塞服务器的最佳来源。
建议您启动long_query_time的中等值。这将最小化I / O和磁盘空间。如果可以的话,修复它找到的查询。
当您筋疲力尽时,请降低该设置以查找更多信息。
使用pt-query-digest查找"最差"查询。
请记住,高值只会查找长查询,即使它们很少见。较低的值会找到频繁运行的快速查询,这些可能是真正的反派。
另一种方法是仅在短时间内或在相对空闲时间内打开慢速日志。你发现的可能仍然非常有用。
轶事:在一个系统中,有一个查询,其中WHERE
被错误配置,使其运行100%CPU。单行修复将CPU降至2%。
另一个轶事:一个特定的查询很快,但经常运行。一点算术说,查询不应该像看到的那样经常发布。当查询可能已经在循环之外时,查询就在循环内。
回到您正在采取的方向......您可以手动执行SHOW PROCESSLIST
以查看频繁或缓慢运行的内容。这很乏味,而且很受欢迎。但它可能同时捕获(1)缓慢,不频繁的查询,以及(2)快速,频繁的查询。
如果您想发布SHOW VARIABLES;
和SHOW GLOBAL STATUS;
,我会检查几百个公式,以便更深入地了解效率低下。