MySQL 开启慢查询日志的方法
1.1简介
开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。
1.2登录数据库查看
[root@localhostlib]#mysql–uroot
因为没有设置设置密码,有密码的在mysql–uroot–p接密码
1.2.1进入MySql查询是否开了慢查询
mysql>showvariableslike'slow_query%'; +---------------------+--------------------------------------------+ |Variable_name|Value| +---------------------+--------------------------------------------+ |slow_query_log|OFF| |slow_query_log_file|/application/mysql/data/localhost-slow.log| +---------------------+--------------------------------------------+ 2rowsinset(0.00sec)
参数说明:
- slow_query_log慢查询开启状态 OFF未开启ON为开启
- slow_query_log_file慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
1.2.2查看慢查询超时时间
mysql>showvariableslike'long%'; +-----------------+-----------+ |Variable_name|Value| +-----------------+-----------+ |long_query_time|10.000000| +-----------------+-----------+ 1rowinset(0.00sec)
long_query_time查询超过多少秒才记录 默认10秒修改为1秒
1.3修改方法1:(不推荐)
方法一:优点临时开启慢查询,不需要重启数据库 缺点:MySql重启慢查询失效
推荐:根据业务需求,建议使用第二种,临时可以用第一种
默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的,可以通过设置slow_query_log的值来开启,如下所示::是否开启慢查询日志,1表示开启,0表示关闭。
1.3.1查看是否开启慢查询
mysql>showvariableslike'%slow_query_log%'; +---------------------+--------------------------------------------+ |Variable_name|Value| +---------------------+--------------------------------------------+ |slow_query_log|OFF| |slow_query_log_file|/application/mysql/data/localhost-slow.log| +---------------------+--------------------------------------------+ 2rowsinset(0.01sec)
输入语句修改(重启后失效,建议在/etc/my.cnf中修改永久生效)
mysql>setglobalslow_query_log=1; QueryOK,0rowsaffected(0.11sec)
1.3.2再次查看
mysql>showvariableslike'%slow_query_log%'; +---------------------+--------------------------------------------+ |Variable_name|Value| +---------------------+--------------------------------------------+ |slow_query_log|ON| |slow_query_log_file|/application/mysql/data/localhost-slow.log| +---------------------+--------------------------------------------+ 2rowsinset(0.00sec)
1.4修改方法2:(推荐)
修改MySql慢查询,好多人不知道my.cnf路径,可以用find查找
备注:我的MySQL是编译的路径为/etc/my.cnf(一般都是这里)
[root@localhostlog]#find/-typef-name"my.cnf" /application/mysql-5.5.51/mysql-test/suite/rpl/my.cnf /application/mysql-5.5.51/mysql-test/suite/federated/my.cnf /application/mysql-5.5.51/mysql-5.5.51-linux2.6-x86_64/mysql-test/suite/rpl/my.cnf /application/mysql-5.5.51/mysql-5.5.51-linux2.6-x86_64/mysql-test/suite/federated/my.cnf /etc/my.cnf###(一般都是这里)
1.4.1.1修改
[root@localhostlog]#vim/etc/my.cnf
找到[mysqld]下面添加
slow_query_log=1 slow_query_log_file=/application/mysql/data/localhost-slow.log long_query_time=1
参数说明:
- slow_query_log慢查询开启状态 1为开启
- slow_query_log_file慢查询日志存放的位置
- long_query_time查询超过多少秒才记录 默认10秒修改为1秒
修改完重启MySQL
1.5查看、测试
1.5.1.1插入一条测试慢查询
mysql>selectsleep(2); +----------+ |sleep(2)| +----------+ |0| +----------+ 1rowinset(2.00sec)
1.5.1.2查看慢查询日志
[root@localhostdata]#cat/application/mysql/data/localhost-slow.log /application/mysql/bin/mysqld,Version:5.5.51-log(MySQLCommunityServer(GPL)).startedwith: Tcpport:3306Unixsocket:/tmp/mysql.sock TimeIdCommandArgument /application/mysql/bin/mysqld,Version:5.5.51-log(MySQLCommunityServer(GPL)).startedwith: Tcpport:3306Unixsocket:/tmp/mysql.sock TimeIdCommandArgument /application/mysql/bin/mysqld,Version:5.5.51-log(MySQLCommunityServer(GPL)).startedwith: Tcpport:3306Unixsocket:/tmp/mysql.sock TimeIdCommandArgument #Time:1706056:37:00 #User@Host:root[root]@localhost[] #Query_time:2.000835Lock_time:0.000000Rows_sent:1Rows_examined:0 SETtimestamp=1496615820; selectsleep(2);
1.5.1.3通过MySQL命令查看有多少慢查询
mysql>showglobalstatuslike'%Slow_queries%'; +---------------+-------+ |Variable_name|Value| +---------------+-------+ |Slow_queries|1| +---------------+-------+ 1rowinset(0.00sec)
1.6日志分析工具mysqldumpslow
在生产环境中,如果要手工分析日志,查找、分析SQL,显然是个体力活,MySQL提供了日志分析工具mysqldumpslow
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。