哪些 SQL 查询使用了这么多的 CPU?

哪些 SQL 查询使用了这么多的 CPU?

我有一个应用程序,其中有很多不同的查询。

我的 mysqld 的 CPU 使用率出现了峰值,这使我的服务器负载最大化,而且我不确定是哪一个查询导致了这种情况。

有没有办法记录/查看来自 unix 级别的所有查询?也许可以查看哪些查询占用了所有资源?

答案1

有一种查询称为“慢查询”,顾名思义,就是需要很长时间才能执行的查询。在某些情况下,这些查询确实很长,但在大多数情况下,慢查询表示代码编写不当或服务器资源不足,导致 MySQL 受到 I/O 限制。

无论哪种情况,如果您看到 mysql 峰值,那么一个非常非常好的起点就是识别您的慢速查询。

我不是 MySQL 专家,无法立即想到这一点,但简而言之,您需要:

  • 打开慢查询日志记录(大多数发行版中默认关闭)
  • 让它运行一会儿
  • 查看日志,看看哪些查询是罪魁祸首

我甚至不会尝试从我的脑子里提取说明,但你可以从这个链接开始:

http://www.ducea.com/2006/11/06/identifying-mysql-slow-queries/

如果此链接过期或变得无用,则要搜索的短语是“记录 mysql 慢查询”之类的内容。

一旦您记录了它们,您就可以顺利地对它们进行分类。

相关内容