共计 1685 个字符,预计需要花费 5 分钟才能阅读完成。
自动写代码机器人,免费开通
如何在 MySQL 中开启慢查询日志?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
(1)配置开启
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
(2)查看方式
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 中开启慢查询日志的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注丸趣 TV 行业资讯频道,感谢各位的阅读!
向 AI 问一下细节