[英]Identify slow query without slow query logs in mysql server
我想知道是否还有其他方法可以检查慢查询而不记录慢查询。 假设我有一个非常繁忙的服务器,无法负担太多日志来节省内存和I / O。 然后,还有其他方法可以检查我的查询速度是否慢吗? 我知道,我们可以对查询进行性能分析,但仍不确定要做什么才能确定哪个查询占用了大部分时间和内存。
刚刚开始进行mysql管理,不确定如何处理。 任何指导将不胜感激。
我发现缓慢是造成服务器瘫痪的最佳来源。
建议您开始将long_query_time设置为较高的值。 这将使I / O和磁盘空间最小化。 如果可以,请更正其找到的查询。
用尽该功能后,请降低该设置以查找更多信息。
使用pt-query-digest查找“最差”查询。
请记住,即使值很少,高值也只能找到长查询。 较低的值将查找经常运行的快速查询,而这可能是真正的反派。
另一种方法是仅短暂地或在相对空闲的时间内打开慢速日志。 您发现的内容可能仍然非常有用。
轶事:在一个系统中,有一个查询,其中WHERE
格式错误,以致其运行100%CPU。 一线修复将CPU降低到2%。
另一个轶事:特定查询速度很快,但是运行频繁。 一点点算术说,查询不应该像所看到的那样频繁地发出。 当查询本可以位于循环外时,它位于循环内。
返回您的操作方向...您可以手动执行SHOW PROCESSLIST
来查看频繁或缓慢运行的内容。 这很乏味,命中或错过。 但是它可能同时捕获(1)慢速,不频繁的查询和(2)快速,频繁的查询。
如果您想发布SHOW VARIABLES;
和SHOW GLOBAL STATUS;
,我将检查数百个公式,这些公式可能会导致对无效性的更多了解。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.