慢速查询是我们在mysql中经常需要用到的一个非常方便的功能。慢速查询对于跟踪有问题的查询非常有用,可以分析出当前程序中的那些Sql语句消耗的资源比较多。
1慢速查询定义
Mysql记录所有执行时间超过long_query_time参数设置的时间阈值的sql语句。慢速查询日志就是记录这些sql的日志。
2 开启慢查询日志
找到mysql配置文件my.cnf,添加到mysqld下。
复制代码如下:
log-slow-queries=d:/MySQL/log/mysqld-slow-query . log #日志所在的位置。(注意权限的问题,不需要设置,系统会给你一个默认文件host_name-slow.log)
Long-query-time=5 #SQL执行时间阈值,默认为10秒。
#log-long-format #表示log-long-format选项用于设置日志的格式,它以扩展的方式记录相关事件。扩展方法可以记录谁在何时发出查询的信息。它可以让我们更好地了解客户端的操作。
#log-slow-admin-statements #在慢速查询日志中记录慢速管理语句,如OPTIMIZE TABLE、ANALYZE TABLE和ALTER TABLE。
Log-queries-not-using-indexes #如果正在运行的sql语句不使用索引,mysql数据库也会在慢速查询日志文件中记录这条SQL语句。
配置后重启mysql服务。
3 测试
为了方便,我只在my.cnf中配置了慢速查询日志的路径.
mysql版本是5.1.73
关于long_query_time:从mysql 5.1开始,long_query_time开始以微秒为单位记录sql语句的运行时间,以前只能以秒为单位记录。这样可以更准确的记录SQL的运行时间,供DBA分析。
输入mysql。
复制代码如下:
mysql显示像“%slow%”这样的变量;#检查有关慢速查询日志的信息。
mysql设置全局long _ query _ time=0.01#将mysql location的值更改为0.01
mysql显示‘long _ query _ time’之类的变量;#看是否生效。
mysql选择睡眠(2);#延迟执行2秒注意:该sql执行后,慢速查询的日志文件中应该已经生成了相关的信息记录。
mysql显示像“%slow%”这样的全局状态;#查看慢速查询语句的次数
您可以看到日志文件中记录了sql。
总结:
Windows下开启MySQL慢查询
在MySQL Windows系统中,配置文件通常是[mysqld]下的my.ini
log-slow-queries=F: MySQL log mysqlslowquery . log
long_query_time=2
Linux下启用MySQL慢查询
在MySQL Windows系统中,配置文件通常是在[mysqld]下面找到的my.cnf
log-slow-queries=/data/MySQL data/slow query . log
long_query_time=2
注意
log-slow-queries=f: MySQL log mysqlslowquery . log是存储慢速查询日志的位置。这个目录一般要有MySQL的运行账号的可写权限,这个目录一般设置为MySQL的数据存储目录;
long_query_time=2中的2表示查询需要两秒以上的时间来记录;