如何在MySQL中开启慢查询日志

57次阅读
没有评论

共计 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 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计1685字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)