2017-06-29 69 views
0

我刚刚遇到一个非常有用的功能,它是slow_query_log,用于检查运行缓慢的查询。我设法以下链接来执行的CMD命令:如何检查项目的slow_query?

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

是一个项目文件夹内创建日志文件,并在其中发现没有问题,所以应该没有慢查询。

但是我想了解这个slow_query_log检查,每数据库,每项目

如果我想检查特定项目的缓慢查询应该输入什么命令? slow_query thingy如​​何知道我的项目中列出了所有的查询,因此查询运行的是什么?

请向我解释这一部分。

这是我如何执行在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,版本:5.7.14(MySQL社区服务器(GPL))。 TCP端口:3306,命名管道:与开始 /tmp/mysql.sock时间
id命令参数

+1

日志是全球性的慢查询日志中的Percona的博客更多有用的信息,但你可以像'grep'过滤。出于好奇,为什么要登录。 ** php **? –

+0

@AlexBlex我简单地用php扩展名来命名。不知道我是否应该保存其他任何扩展名。请告知。 – 112233

+0

https://en.wikipedia.org/wiki/Filename_extension –

回答

1

,最好的办法是使用慢速查询分析器。

我发现最好的是Percona的pt-query-digest它使你能够以许多不同的方式过滤和分析缓慢的日志。这个工具包含在Percona's Toolkit里面,它有很多用于MySQL DBA的有用工具。

现在我假设你想过滤每个模式/数据库的日志(项目它是MySQL中的一个外部概念),如果是的话你会使用pt-使用--filter '($event->{db} || "") =~ m/mydb/'选项进行查询摘要,其中mydb是要过滤的数据库。

你可以读到这样this one

+0

感谢您的详细解释。请帮助启发我多一点。因此,为了检查哪个查询运行缓慢,我需要运行一个接一个的查询? – 112233

+0

慢查询日志向它的文件写入任何查询,其中long_query_time秒以及有用的信息,它不关心数据库或项目。您只能在分析书面文件时过滤它。如果您想了解查询运行缓慢的原因,那么您需要查看EXPLAIN命令。 – Jimmy