如何在MySQL中开启慢查询日志?
Posted Chihiro.511
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在MySQL中开启慢查询日志?相关的知识,希望对你有一定的参考价值。
对于很多小伙伴来说,如何在mysql中开启慢查询日志这个问题,相信这个问题在你的心里困扰许久了吧,今天,摩杜云就为大家详细介绍一下问题出现的原因和解决方法,希望能帮到你解决这个问题。
一、配置开启
Linux:
在MySQL配置文件my.cnf中增加如下语句:
log-slow-queries=/var/lib/mysql/slowquery.log #指定日志文件存放位置,可以为空,系统会给一个缺省的文件host_name-slow.log
long_query_time=5 #记录超过的时间,默认为10s,这里设置为查询时间超过5s的查询语句
log-queries-not-using-indexes = on # 列出没有使用索引的查询语句
#log-queries-not-using-indexes 是否记录所有没有使用索引的query,可以根据情况决定是否开启
#log-long-format 是否记录所有的查询记录,包括没有使用索引的查询
Windows:
在my.ini的[mysqld]添加如下语句(语句选项以及释义同上):
log-slow-queries = E:\\mysql\\log\\mysqlslowquery.log
long_query_time = 5
二、查看方式
Linux:
使用mysql自带命令mysqldumpslow查看
常用命令
-s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string
eg:
-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有 c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒序
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的
具体命令使用如下:
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。
Windows:
当你是第一次开启mysql的慢查询,会在你指定的目录下创建这个记录文件,本文就是mysqlslowquery.log,这个文件的内容大致如下(第一次开启MYSQL慢查询的情况下)
E:\\web\\mysql\\bin\\mysqld, Version: 5.4.3-beta-community-log (MySQL Community Server (GPL)). started with:
TCP Port: 3306, Named Pipe: (null)
Time Id Command Argument
可以通过如下的命令来查看慢查询的记录数:
mysql> show global status like ‘%slow%';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| Slow_launch_threads | 0 |
| Slow_queries | 0 |
+---------------------+-------+
测试
1.执行一条慢查询SQL语句
mysql> select sleep(2);
2.查看是否生成慢查询日志
ls /usr/local/mysql/data/slow.log
到这里就结束了,大家看完上面关于如何在MySQL中开启慢查询日志的相关内容,相信大家都知道怎么操作了吧,如若还是有不清楚的地方或者想了解更多相关内容的可以关注摩杜云,国内知名云计算及人工智能服务商,十几年行业经验,专业可靠!
以上是关于如何在MySQL中开启慢查询日志?的主要内容,如果未能解决你的问题,请参考以下文章