mysql中slow query log慢日志查询分析
在mysql中slow query log是一个非常重要的功能,我们可以开启mysql的slow query log功能,这样就可以分析每条sql执行的状态与性能从而进行优化了.
一、慢查询日志配置
开启慢查询日志,配置样例:
/etc/mysql/my.cnf
[mysqld]
log-slow-queries
在 my.cnf 配置文件中增加上述配置项并重启 mysql 服务,这时 mysql 慢查询功能生效,慢查询日志将写入参数 DATADIR,数据目录:/var/lib/mysql.
指定的路径下,默认文件名是 host_name-slow.log.
和错误日志、查询日志一样,慢查询日志记录的格式也是纯文本,可以被直接读取,下例中演示了慢查询日志的设置和读取过程.
1),首先查询一下 long_query_time 的值,代码如下:
- mysql>showvariableslike'long%';
- +-----------------+-------+
- |Variable_name|Value|
- +-----------------+-------+
- |long_query_time|10|
- +-----------------+-------+
- 1rowinset(0.00sec)
2),为了方便测试,将修改慢查询时间为 5 秒,代码如下:
mysql> set long_query_time=1;
Query OK, 0 rows affected (0.02 sec)
以上操作只限于当前有效,关闭服务器得重新设置,下面的方法可直接写入my.cnf.
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=1
二、mysqldumpslow 的常用参数如下:
-s 后面接下面的参数表示 mysqldumpslow 结果显示的顺序!
c query执行的次数
t sql执行的时间
l lock锁表的时间
r sql返回的行数
ac,at,al,ar,表示倒序排列
-t,是top n,即为返回前面n条数据。
-g,后边可以写一个正则匹配模式,大小写不敏感
显示执行时间最长的前两个,代码如下:
- [root@rac3python]#mysqldumpslow-st-t2/opt/mysql/data/slowquery.log
- Readingmysqlslowquerylogfrom/opt/mysql/data/slowquery.log
- Count:2Time=412.54s(825s)Lock=0.00s(0s)Rows=1.0(2),root[root]@localhost
- selectcount(N)fromsbtest,t1wheret1.c=sbtest.c
- Count:1Time=778.20s(778s)Lock=0.00s(0s)Rows=1.0(1),root[root]@localhost
- selectcount(N)fromsbtestwheresbtest.idnotin(selectidfromt1)
- #显示次数最多的前两个
- [root@rac3python]#mysqldumpslow-sc-t2/opt/mysql/data/slowquery.log
- Readingmysqlslowquerylogfrom/opt/mysql/data/slowquery.log
- Count:12Time=0.00s(0s)Lock=0.00s(0s)Rows=1.0(12),root[root]@localhost
- selectcount(N)fromtab_1
- Count:2Time=412.54s(825s)Lock=0.00s(0s)Rows=1.0(2),root[root]@localhost
- selectcount(N)fromsbtest,t1wheret1.c=sbtest.c
- [root@rac3python]#
- //开源软件:phpfensi.com
热门评论