MySQL slow query [慢查询] 资料整理
mysql 查询 整理 资料 Query slow
2023-09-14 09:01:02 时间
前言:
MySQL中提供了一个慢查询的日志记录功能,可以把查询SQL语句时间大于多少秒的语句写入慢查询日志,日常维护中可以通过慢查询日志的记录信息快速准确地判断问题所在。 (有点类似 oracle的v$session_longops )
如下为MySQL slow query[慢查询]配置、log文件参数介绍、脚本实现每天以日期格式生成新的log文件等.. 1、/etc/my.cnf 配置 slow query #开启慢查询 slow_query_log=on
#超过2秒的查询就视为慢查询 long_query_time=2 #记录日志 slow_query_log_file=/data/mysql/slow.log
1)mysql show variables like %long_query_time%;
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 2.000000 |
+-----------------+----------+
2) mysql show variables like %slow_query_log%;
+------------------------------+---------------------------+
| Variable_name | Value |
+------------------------------+---------------------------+
| slow_query_log | ON |
| slow_query_log_file | /data/public3306/slow.log |
+------------------------------+---------------------------+
mysql
# User@Host: root[root] @ [192.168.0.20] # Query_time: 372 Lock_time: 136 Rows_sent: 152 Rows_examined: 263630 select id, name from manager where id in (66,10135); Query_time == 用的时间秒
-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语句。 ###### 查询慢查询log中超过10s sql的个数(包括重复的sql).. grep Query_time: slow.log |awk $3 =10{printf("%.f\n",$3)}|wc -l 4、其他参数设置
慢查询相关的 参数log_queries_not_using_indexes 如果log_queries_not_using_indexes为ON的话,当执行一个sql语句的时候,如果一个表没有索引就会把这个信息记录在慢查询文件中 show variables like "%log_queries_not%" ; set global log_queries_not_using_indexes=on;
*** 为了便捷统计每天slow query查询 量和性能问题,特写脚本实现slow query每天以日期形式新生成一个log *** 其实就是一个 /usr/bin/mysql -uroot -N -e "set global slow_query_log_file=/data/mysql/slow_`date +%Y_%m_%d`.log;" *** 只是直接在crontab 写命令一直不生效,考虑可能是因为"" 双引号原因,所以放在a.sh 提供执行权限 ‘x’即可执行. 具体如下 : [root@lottery ~]# crontab -l 0 0 * * * /bin/sh /root/a.sh [root@lottery ~]# cat a.sh /usr/bin/mysql -uroot -N -e "set global slow_query_log_file=/data/mysql/slow_`date +%Y_%m_%d`.log;" [root@lottery ~]# mysql show variables like slow_query%log%;
| Variable_name | Value |
+-------------------------------+-------------------------------------+
| slow_query_log | ON |
| slow_query_log_file | /data/mysql/slow_2015_05_12.log |
+-------------------------------+-------------------------------------+
【MySQL】通用查询日志 general query log 详解 通用查询日志(general query log)用来记录用户的所有操作,包括启动和关闭MySQL服务、所有用户的连接开始时间和截止时间、发送给MySQL数据库服务器的所有SQL指令等。当我们的数据发生异常时,查看通用查询日志,还原操作时的具体场景,准确定位问题。
Metricbeat:mysql module之query metricset介绍 Elastic官网对于mysql query metricset介绍很少,也没有介绍其用法,但是在基于ELK实现mysql性能监控中,query metricset又是明显支持的指标集。本着探索学习精神,通过查阅了不少资料后,今天我们就针对query metricset来详细介绍。
MySQL中提供了一个慢查询的日志记录功能,可以把查询SQL语句时间大于多少秒的语句写入慢查询日志,日常维护中可以通过慢查询日志的记录信息快速准确地判断问题所在。 (有点类似 oracle的v$session_longops )
如下为MySQL slow query[慢查询]配置、log文件参数介绍、脚本实现每天以日期格式生成新的log文件等.. 1、/etc/my.cnf 配置 slow query #开启慢查询 slow_query_log=on
#超过2秒的查询就视为慢查询 long_query_time=2 #记录日志 slow_query_log_file=/data/mysql/slow.log
1)mysql show variables like %long_query_time%;
+-----------------+----------+
| Variable_name | Value |
+-----------------+----------+
| long_query_time | 2.000000 |
+-----------------+----------+
2) mysql show variables like %slow_query_log%;
+------------------------------+---------------------------+
| Variable_name | Value |
+------------------------------+---------------------------+
| slow_query_log | ON |
| slow_query_log_file | /data/public3306/slow.log |
+------------------------------+---------------------------+
mysql
# User@Host: root[root] @ [192.168.0.20] # Query_time: 372 Lock_time: 136 Rows_sent: 152 Rows_examined: 263630 select id, name from manager where id in (66,10135); Query_time == 用的时间秒
-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语句。 ###### 查询慢查询log中超过10s sql的个数(包括重复的sql).. grep Query_time: slow.log |awk $3 =10{printf("%.f\n",$3)}|wc -l 4、其他参数设置
慢查询相关的 参数log_queries_not_using_indexes 如果log_queries_not_using_indexes为ON的话,当执行一个sql语句的时候,如果一个表没有索引就会把这个信息记录在慢查询文件中 show variables like "%log_queries_not%" ; set global log_queries_not_using_indexes=on;
*** 为了便捷统计每天slow query查询 量和性能问题,特写脚本实现slow query每天以日期形式新生成一个log *** 其实就是一个 /usr/bin/mysql -uroot -N -e "set global slow_query_log_file=/data/mysql/slow_`date +%Y_%m_%d`.log;" *** 只是直接在crontab 写命令一直不生效,考虑可能是因为"" 双引号原因,所以放在a.sh 提供执行权限 ‘x’即可执行. 具体如下 : [root@lottery ~]# crontab -l 0 0 * * * /bin/sh /root/a.sh [root@lottery ~]# cat a.sh /usr/bin/mysql -uroot -N -e "set global slow_query_log_file=/data/mysql/slow_`date +%Y_%m_%d`.log;" [root@lottery ~]# mysql show variables like slow_query%log%;
| Variable_name | Value |
+-------------------------------+-------------------------------------+
| slow_query_log | ON |
| slow_query_log_file | /data/mysql/slow_2015_05_12.log |
+-------------------------------+-------------------------------------+
【MySQL】通用查询日志 general query log 详解 通用查询日志(general query log)用来记录用户的所有操作,包括启动和关闭MySQL服务、所有用户的连接开始时间和截止时间、发送给MySQL数据库服务器的所有SQL指令等。当我们的数据发生异常时,查看通用查询日志,还原操作时的具体场景,准确定位问题。
Metricbeat:mysql module之query metricset介绍 Elastic官网对于mysql query metricset介绍很少,也没有介绍其用法,但是在基于ELK实现mysql性能监控中,query metricset又是明显支持的指标集。本着探索学习精神,通过查阅了不少资料后,今天我们就针对query metricset来详细介绍。
相关文章
- Yii2 mysql查询 int自动变string解决办法
- mysql 在update中实现子查询的方式
- Mysql运行状态查询命令及调优详解
- 【MySQL】数据库性能测试
- 如何使用mysql profiling功能分析单条查询语句
- Mybatis+mysql动态分页查询数据案例——房屋信息的接口(IHouseDao)
- linux安装jdk、tomcat、maven、mysql
- mysql查询更新时的锁表机制分析
- mysql 必知必会整理—子查询与连接表[八]
- Python操作MYSQL数据库
- 【Data Cluster】真机环境下MySQL数据库集群搭建
- mysql 必知必会整理—子查询与连接表[八]
- MySQL优化之查询缓存(mysql8官方已经废弃这个功能)
- Atitit Mysql查询优化器 存取类型 范围存取类型 索引存取类型 AND or的分析
- 〖Python 数据库开发实战 - MySQL篇⑪〗- 修改数据表结构
- mysql 1366的错误 字符集错误解决方案
- 007-Centos 7.x 安装 Mysql 5.7.13
- 【MySQL案件】ERROR 1418
- MySQL的左连接查询,只取出最大的一条数据
- MySQL查询优化之explain的深入解析
- 【异常】MySQL NOT IN 子查询 不生效的原因