如何检查项目的 slow_query?

How to check slow_query for a project?

我刚刚遇到一个非常有用的功能,它是 slow_query_log 可以检查 运行 缓慢的查询。我设法在 link 之后执行了 CMD 中的命令:

https://www.a2hosting.com/kb/developer-corner/mysql/enabling-the-slow-query-log-in-mysql

日志文件是在项目文件夹中创建的,里面没有查询,所以应该没有慢查询。

不过我想了解这个slow_query_log是如何检查的,每个数据库,每个项目?

如果我想检查特定项目的慢速查询,我应该输入什么命令? slow_query 东西如何知道我的 myproject 中列出的所有查询的位置,因此整个查询 运行 是什么?

Please explain this part to me.

这是我在 CMD 中执行命令的方式:

cd C:/wamp/bin/mysql/mysql5.7.14/bin
mysql -u myusername-p
enter password: mypassword
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 5;
SET GLOBAL slow_query_log_file = 'C:/wamp/www/myproject/slow_query/log.php';

然后我退出CMD,返回输入,mysql SELECT SLEEP(6);

我在 slow_query/log.php 文件中找到了以下内容

wampmysqld, Version: 5.7.14 (MySQL Community Server (GPL)). started with: TCP Port: 3306, Named Pipe: /tmp/mysql.sock Time
Id Command Argument

最好的方法是使用慢查询分析器。

我发现最好的是 Percona 的 pt-query-digest,它使您能够以多种不同的方式过滤和分析慢速日志。此工具包含在 Percona's Toolkit 中,其中有许多对 MySQL DBA

有用的工具

现在我假设您想根据 schema/database 过滤日志(在 MySQL 项目中它是一个陌生的概念),如果是这样,您将使用 pt-query-digest 使用 --filter '($event->{db} || "") =~ m/mydb/' 选项,其中 mydb 是您要过滤的数据库。

您可以在 Percona 的博客中阅读更多关于慢查询日志的有用信息,例如 this one