慢查询日志的管理

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
日志服务 SLS,月写入数据量 50GB 1个月
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 前言:慢查询日志是mysql的另一个调优的入口,通过定义效率慢的sql语句,然后mysql根据这个定义记录在相应的日志里面,所以就叫慢查询日志;  参数概况:检查参数的查看:SHOW VARIABLES LIKE 'slow_query_log';...

前言:慢查询日志是mysql的另一个调优的入口,通过定义效率慢的sql语句,然后mysql根据这个定义记录在相应的日志里面,所以就叫慢查询日志;

 

参数概况:

检查参数的查看:SHOW VARIABLES LIKE 'slow_query_log';

mysql> SHOW VARIABLES LIKE 'slow_query_log';

+----------------+-------+

| Variable_name  | Value |

+----------------+-------+

| slow_query_log | ON   |

+----------------+-------+

1 row in set (0.00 sec)

 

当参数值为ON为开启,参数值为OFF为关闭;

 

相关参数:

可以在/etc/my.cnf文件中修改或通过set命令来操作,详细的操作可以查看已发的文档『深入理解mysql参数』

1、慢查询日志的开关:SET GLOBAL slow_query_log=ON/OFF,通过设置ON/OFF来进行开关;

2、慢查询日志的位置:slow_query_log_file=/data/mysql,文件路径

3、指定多少秒未返回结果的语句属于慢查询:long_query_time=10,超过10s钟

4、记录所有没有使用到索引的查询语句:long-queries-not-using-indexes

5、记录那些由于查找了多于1000次而引发的慢查询:min_examined_row_limit=1000

6、记录那些慢的OPTIMIZE TABLE\ANALYZE TABLE\ALTER TABLE语句:log_slow_admin-statements

7、记录有slave所产生的慢查询:log-slow-slave-statements

 

参数查看:

mysql> SHOW VARIABLES LIKE 'slow_query_log';

+----------------+-------+

| Variable_name | Value |

+----------------+-------+

| slow_query_log | ON | /当前系统的慢查询打开状态/ +----------------+-------+ 1 row in set (0.01 sec)

 

mysql> SHOW VARIABLES LIKE 'slow_query_log_file';

+---------------------+----------------------------+

| Variable_name | Value |

+---------------------+----------------------------+

| slow_query_log_file | /data/mysql/mysql-slow.log | /慢查询日志的位置/

+---------------------+----------------------------+

1 row in set (0.00 sec)

 

 

mysql> SHOW VARIABLES LIKE 'long_query_time';

+-----------------+-----------+ |

Variable_name | Value |

+-----------------+-----------+ |

long_query_time | 10.000000 | /获取超过10S的SQL语句/

+-----------------+-----------+

1 row in set (0.00 sec)

 

例子:select sleep(15);

mysql> select sleep(14);

+-----------+

| sleep(14) |

+-----------+

| 0 |

+-----------+

1 row in set (14.00 sec)

 

mysql> quit

-bash-4.1# cat /data/mysql/slow-log

/usr/local/mysql/bin/mysqld, Version: 5.5.36-log (Source distribution). started with:

Tcp port: 3306 Unix socket: /tmp/mysql.sock

Time Id Command Argument

# Time: 140904 17:39:36

# User@Host: root[root] @ localhost []

# Query_time: 14.000705 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0

SET timestamp=1409823576;

select sleep(14); ---这就是抓取的慢查询日志

 

总结:在实际的生产系统中,慢查询日志一般是不启用的;

如果需要的话一般都开启一段时间跟踪系统中的缓慢语句;

生产系统中该日志也会不断的增长,可以通过操作系统命令进行删除;

当慢查询日志很大的情况下,可以通过工具进行分析,分析的工具有Mysqldumpslow、mysqlsla等

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本文作者:JOHN 某上市公司DBA

数据库技术群:367875324 (该群有诸多公司的IT负责人,加入请备注数据库管理 )

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
打赏
0
0
0
0
7
分享
相关文章
【YashanDB知识库】应用绑定参数的慢查询,慢日志抓取不到
【YashanDB知识库】应用绑定参数的慢查询,慢日志抓取不到
【赵渝强老师】Redis的慢查询日志
Redis慢查询日志用于记录执行时间超过预设阈值的命令,帮助开发和运维人员定位性能问题。每条慢查询日志包含标识ID、发生时间戳、命令耗时及详细信息。配置参数包括`slowlog-max-len`(默认128)和`slowlog-log-slower-than`(默认10000微秒)。实战中可通过`slowlog get`获取日志、`slowlog len`查看长度、`slowlog reset`重置日志。建议线上环境将`slowlog-max-len`设为1000以上,并根据并发量调整`slowlog-log-slower-than`。需要注意的是,慢查询只记录命令执行时间。
331 5
【赵渝强老师】MySQL的慢查询日志
MySQL的慢查询日志用于记录执行时间超过设定阈值的SQL语句,帮助数据库管理员识别并优化性能问题。通过`mysqldumpslow`工具可查看日志。本文介绍了如何检查、启用及配置慢查询日志,并通过实例演示了慢查询的记录与分析过程。
562 3
怎样分析慢查询日志?
【10月更文挑战第29天】怎样分析慢查询日志?
209 2
分析慢查询日志
【10月更文挑战第29天】分析慢查询日志
188 3
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
125 3
可观测性体系问题之ECS管控对其所有日志的管理如何解决
可观测性体系问题之ECS管控对其所有日志的管理如何解决
93 0
技术好文共享::Linux系统日志管理日志转储
技术好文共享::Linux系统日志管理日志转储
154 0
Liunx怎么安装spdlog(这是用来管理日志部分)
Liunx怎么安装spdlog(这是用来管理日志部分)
269 7

热门文章

最新文章

AI助理
登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问

你好,我是AI助理

可以解答问题、推荐解决方案等