mysql查看慢查询(MySQL 慢查询日志深入理解)
mysql查看慢查询
MySQL 慢查询日志深入理解什么是慢查询日志
mysql的慢查询日志是 mysql提供的一种日志记录,它用来记录在 mysql 中响应时间超过阀值的语句,具体指运行时间超过long_query_time 值的 sql,则会被记录到慢查询日志中
具体指运行时间超过 long_query_time 值的 sql,则会被记录到慢查询日志中。long_query_time 的默认值为 10, 意思是运行 10 秒以上的语句
由它来查看哪些 sql 超出了我们的最大忍耐时间值,比如一条sql执行超过 5 秒钟,我们就算慢 sql,希望能收集超过 5 秒的sql,结合之前explain进行全面分析
默认情况下,mysql 数据库没有开启慢査询日志,需要我们手动来设置这个参数。当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢査询日志支持将日志记录写入文件!
如何开启慢查询
查看开启状态
|
show variables like '%slow_query_log%' |
开启慢查询
|
set global slow_query_log = 1 |
使用 set global_slow_query_log = 1 开启了慢查询日志只对当前数据库生,如果 mysql 重启后则会失效。
如果要永久生效,就必须修改配置文件 my.cnf(其它系统变量也是如此)修改 my.cnf 文件,[mysqld]下增加或修改参数
slow_query_log 和 slow_query_log_file 后,然后重启 mysql 服务器。也即将如下两行配置进my.cnf文件
|
slow_query_log =1 slow_query_log_file=/var/lib/mysql/tim-slow.log |
关于慢查询的参数 slow_query_log_fie,它指定慢查询日志文件的存放路径,系统默认会给一个缺省的文件host_name-slow.log(如果没有指定参数 slow_query_log_file的话)
那么开启慢查询日志后,什么样的sql参会记录到慢查询里面?
通过 show variables like ‘long_query_time%' 来查看默认时间长度,单位是秒:
同样的,可以使用命令修改,也可以在my.cnf里面配置。假如运行时间正好等于 long_query_time 的情况,并不会被记录下来。也就是说,在mysql源码里是判断大于 long_query_time,而非大于等于!
设置记录的阈值:
|
set global long_query_time=3; |
同样的,可以使用命令修改,也可以在my.cnf里面配置。假如运行时间正好等于 long_query_time 的情况,并不会被记录下来。也就是说,在mysql源码里是判断大于 long_query_time,而非大于等于!
设置记录的阈值:
|
set global long_query_time=3; |
设置了但是还是没有发生更改?为什么?此时需要重新开启一个会话才可以:
接下来实行一个较慢的查询,如下图,但是记得要在配置文件中做如下配置:
接着去日志文件中查看存在哪些超过阈值的sql就好了:
查询当前系统中有多少条慢查询记录:
记载一下我的配置文件
|
slow_query_log=1; slow_query_log_file=/var/lib/mysql/tim-slow.log; long_query_time=3; log_output=file |
日志分析工具mysqldumpshow
在生产环境中,如果要手工分析日志,查找、分析 sql,显然是个体力活,mysql 提供了日志分析工具mysqldumpshow
- s:是表示按何种方式排序
- c:访问次数
- l:锁定时间
- r:返回记录
- t:查询时间
- al:平均锁定时间
- ar:平均返回记录数
- at:平均查询时间
- t:即为返回前面多少条的数据
- g:后边搭配一个正则匹配模式,大小写不敏感的
下面是使用示例:
得到返回记录集最多的 10 个 sql
|
mysqldumpslow -s r -t 10 /var/lib/mysql/tim-slowlog |
得到访问次数最多的 10 个 sql
|
mysqldumpslow -s c-t 10 /var/lib/mysql/tim-slow log |
得到按照时间排序的前 10 条里面含有左连接的查询语句
|
mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/tim-slowlog |
另外建议在使用这些命令时结合和 more 使用,否则有可能出现爆屏情況
|
mysqldumpslow -s r -t 10 /var/lib/mysq/tim-slow.log | more |
以上就是mysql 慢查询日志深入理解的详细内容,更多关于mysql 慢查询日志的资料请关注开心学习网其它相关文章!
原文链接:https://juejin.cn/post/6953551889686331423
- 阿里云的自带mysql怎么开启(阿里云云服务器mysql密码找回的方法)
- mysql类型转换函数推荐(mysql 数据类型转换的实现)
- mysqldump导入导出(MySQL官方导出工具mysqlpump的使用)
- mysql查询数据去除重复(MySQL 大批量插入,如何过滤掉重复数据?)
- mysql中timestamp类型的CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP属性
- mysql exists的用法(Mysql exists用法小结)
- mysql将字符串转换成整数(MYSQL字符串强转的方法示例)
- mysql cache(MySQL取消了Query Cache的原因)
- 如何在cmd里开启mysql(Windows下通过cmd进入DOS窗口访问MySQL数据库)
- 为什么mysql主键要设置自增列(浅谈MySQL中的自增主键用完了怎么办)
- docker搭建mysql服务(Docker部署Mysql集群的实现)
- mysql权限管理详解(Mysql 用户权限管理实现)
- myeclipse连接mysql数据库的方法(教你用eclipse连接mysql数据库)
- mysql中查询数据合并(Mysql合并结果接横向拼接字段的实现步骤)
- mysql和utf8哪个好(为什么在MySQL中不建议使用UTF-8)
- mysql开启事务没有提交(MySQL 事务autocommit自动提交操作)
- 乔欣古装女主戏获热度 作为女主,却没吃到红利(乔欣古装女主戏获热度)
- 爱情是什么(爱情是什么最经典的话)
- 乔欣 古装剧中的高颜值(古装剧中的高颜值)
- 怎么才可以财富自由(如何让自己实现财富自由)
- 为什么越来越多年轻人回农村(为什么越来越多年轻人回农村生活)
- 怎么快速学好英语(怎么快速学好英语初中)
热门推荐
- python如何读取文件(Python从文件中读取数据的方法讲解)
- 谷歌gcp云认证考试(谷歌云gcp开启ssh访问并设置密码)
- html5拖动效果怎么写(Html5 滚动穿透的方法)
- html5 meta标签
- pythonlist类型教程(Python List cmp知识点总结)
- 忘记mysql密码怎么登录(Mysql用户忘记密码及密码过期问题的处理方法)
- SQL中的@@Error的使用
- SqlServer生成连续数字根据指定的数字操作(SqlServer生成连续数字根据指定的数字操作)
- vue websocket实时刷新数据(Vue+WebSocket页面实时刷新长连接的实现)
- php面向对象怎么用(PHP面向对象程序设计之对象克隆clone和魔术方法__clone用法分析)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9