Mysql慢日志查询
Mysql慢日志查询
简介
- MySQL慢查询日志是MySQL提供的一种日志记录,用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中
- long_query_time的默认值为10,意思是运行10秒以上的语句
默认情况下,MYSQL数据库没有开启慢查询日志,需要我们手动来设置这个参数
当前,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会对性能造成一定的影响,慢查询日志支持将日志记录到文件中
查看是否开启及如何开启
查看是否开启:
show variables like '%slow_query_log%';
默认情况下slow_query_log的值为OFF,表示慢查询日志是禁用的
可以通过设置slow_query_log的值来开启
使用set global slow_query_log=1开启慢查询日志只对当前数据库生效
如果重启MYSQL,则会失效
set global slow_query_log=1
设置永久开启
修改配置文件my.cnf
在[mysqld]下增加或修改参数
slow_query_log和slow_query_log后,然后重启MYSQL服务器,将下面两行配置进my.cnf配置文件
slow_query_log=1
slow_query_log_file=/var/lib/mysql/dhy.log
关于慢查询的参数slow_query_log,它指定慢查询日志文件的存放路径,系统默认会给一个缺省的文件host_name-slow.log(如果没有指定参数slow_query_log_file的话)
修改和查看默认的最长查询时间参数
默认情况下long_query_time的值为10秒,表示超过10秒的sql被定义为慢sql,会被记录
查看最长查询时间参数的命令:
show variables like 'long_query_time%';
也可以使用命令修改,也可以在my.cnf参数里面修改
如果运行时间恰好等于long_query_time,则不会被记录下来,也就是说mysql源码是判断大于long_query_time而不是大于等于
设置最长查询时间的命令:
set global long_query_time=3
修改后需要重写连接或新开一个会话才能看到修改值:
show variables like 'long_query_time%';
或者使用下面的命令查看:
show global variables like 'long_query_time%';
select sleep(4):当前查询执行四秒
查询当前系统中有多少条慢查询记录
show global status like '%Slow_queryies%';
日志分析工具mysqldumpslow
显示帮助信息
mysqldumpslow --help
mysqldumpslow的帮助信息:
s:表示按照何种方式排序
c:访问次数
l:锁定时间
r:返回记录
t:查询时间
al:平均锁定时间
ar:平均返回记录数
at:平均查询时间
t:即为返回前面多少条数据
g:后边搭配一个正则匹配模式,大小写不敏感
得到返回记录集最多的10个sql
mysqldumpslow -s -r -t 10 /var/lib/mysql/dhy.log
得到访问次数最多的10个sql
mysqldumpslow -s -c -t 10 /var/lib/mysql/dhy.log
得到按照时间排序的前10条里面含有左连接的查询语句
mysqldumpslow -s -t -t 10 -g 'left join' /var/lib/mysql/dhy.log
建立在使用这些命令时,结合|more来使用,否则可能会爆屏
mysqldumpslow -s -c -t 10 /var/lib/mysql/dhy.log | more
相关文章
- MySQL实现跨数据库全外连接查询(mysql的全外连接)
- MySQL数据库:数量有多大?(mysql数据库数量)
- MySQL入门教程:快速学习CHM版(mysql教程chm)
- MySQL中文输入的技巧与方法(mysql输入中文)
- MySQL 入门指南:知乎上你必须知道的答案(mysql入门知乎)
- MySQL数据库操作:掌握基本SQL语句(mysql数据库的语句)
- MySQL与JavaScript结合,实现卓越前端开发(jsmysql)
- 查询MySQL中Like查询的精彩绝伦(mysql的like)
- 架构MySQL数据库域名架构:提升数据存储能力(mysql数据库域名)
- MySQL查询:获取唯一结果(mysql查询唯一)
- MySQL表关联:实现高效数据修改(mysql表关联修改数据)
- 数据查询MySQL中查询指定日期数据的方法(mysql指定日期)
- MySQL的默认端口号是多少?(mysql的默认端口号)
- 揭秘MySQL慢查询日志之谜(mysql慢日志查询)
- 查看MySQL日志:实现数据库管理(查询mysql日志)
- 查询MySQL版本号:简单几步(mysql显示版本)
- 查询深入探索MySQL视图优化慢查询(mysql视图慢)
- MySQL数据库中查询数据之间的关系(mysql查询之间的数据)
- MySQL备份:如何使用SQL语句(mysql备份sql语句)
- 优化效率,提升查询速度 MySQL创建索引实战指南(mysql穿件索引)
- MySQL中如何查询和添加序号(mysql查询添加序号)
- 分类MySQL递归查询实现父子分类层级结构(mysql递归查询父子)
- MySQL的日常备份方法如何进行日备份(mysql中做日备份)
- MySQL联表分组查询(mysql两表联查分组)
- 命令行进入MySQL,简洁之美(cmd 进人mysql)
- MySQL中AS关键字的含义(as在mysql的意思)
- MySQL的意思是什么(mysql中午什么意思)
- MySQL 三表 Group 查询实现精细数据分析(mysql三表group)
- MySQL的三种复制模式解析复制半同步复制全同步复制(mysql三种复制模式)
- 轻松学习MySQL,万字入门指南献上(mysql万字入门)
- 探索MySQL XY深入了解这个数据库管理系统的性能和功能(mysql xy)
- MYSQL 教程使用 XMLAGG 函数在查询结果中合并多行数据到一个 XML 值中(mysql xmlagg)
- MySQL无法保证高效率数据处理(mysql不等于提供效率)