慢查询日志|学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介: 快速学习慢查询日志

开发者学堂课程【MySQL 高级应用 - 索引和锁慢查询日志】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/598/detail/8626


慢查询日志


目录:

一、慢查询日志定义

二、慢查询日志的应用

三、日志分析工具 mysqldumpslow

 

一、慢查询日志定义

MySQL 的慢查询日志是 MySQL 提供的一种日志记录,它用来记录在 MvSQL 中响应时间超过阀值的语句,具体指运行时间超过 long_querytime 值的 SQL,则会被记录到慢查询日志中。

具体指运行时间超过 longquerytime 值的 SQL,则会被记录到慢查询日志中。long querytime 的默认值为10,意思是运行10秒以上的语句。

由他来查看哪些 SQL 超出了我们的最大忍耐时间值,比如一条 sql 执行超过5秒钟,我们就算慢 SQL,希望能收集超过5秒的 sal ,结合之前 explain 进行全面分析。

 

二、慢查询日志的应用

1.说明:

默认情况下,MySQL 数据库没有开启慢查询日志,需要我们手动来设置这个参数。

当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件

2.查看是否开启及如何开启

默认SHOW VARIABLES LIKE '%slow_query_log%';

默认情况下 slow-query-log的值为 OFF ,表示慢查询日志是禁用的,可以通过设置slow_query_log  的值来开启

image.png

开启setglobal slow_query_log=1;

使用setglobal slow_query_log=1;开启了慢查询日志只对当前数据库生效,如果 MySQL 重启后则会失效。

如果要永久生效,就必须修改配置文件 mycnf (其它系统变量也是如此)

修改 mycnf 文件,[mysqld]下增加或修改参数

slow_query_logslow_query_iog_file后,然后重启 MySQL 服务器。也即将如下两行配置进 mycnf 文件

slow_query_log =1

slow_query_log_file=/var/lib/mysql/atguigu-slow.log

关于慢查询的参数 slowquerylog_file,它指定慢查询日志文件的存放路径,系统默认会给一个缺省的文件

host_name-slow.log

(如果没有指定参数slow_query_log_file的话)

3.那么开启了慢查询日志后,什么样的 SQL 才会记录到慢查询日志里面呢?

这个是由参数 long_query_time控制,

默认情况下 long_query_time的值为10秒命令:

SHOW VARIABLES LIKE 'long query time%;

可以使用命令修改,也可以在my.cnf参数里面修改。

假如运行时间正好等于long-query-time的情况,并不会被记录下来。

也就是说,在 mysql 源码里是判断大于 long-query-time,而非大于等于。

4.Case+

查看当前多少秒算慢:

SHOW VARIABLES LIKE'long_query_time%;

设置慢的阙值时间:set global long_query_time=3;

为什么设置后看不出变化?

需要重新连接或新开一个会话才能看到修改值。

SHOW VARIABLES LIKE 'long_query_time%';

show global variables like 'long_query_time;

记录慢 SQL 并后续分析

查询当前系统中有多少条慢查询记录

5.配置版

mysqld】下配置:

slow_query_log=1;

slow_querylogfile=/var/lib/mysql/atguigu-slow.log

long_query_time=3;

log_output=FILE

 

三、日志分析工具 mysqldumpslow

在生产环境中,如果要手工分析日志查找、分析 SQL,显然是个体力活,MySQL 提供了日志分析工具 mysqldumpsiow

1.查看 mysqldumpslow 的帮助信息

s:是表示按照何种方式排序:

c访问次数

l:锁定时间

r:返回记录

t:查询时间

al:平均锁定时间

ar:平均返回记录数

at:平均查询时间

t;即为返回前面多少条的数据;

g:后边搭配一个正则匹配模式,大小写不敏感的;

2.工作常用参考

得到返回记录集最多的10SQL

mysqldumpslow-sr-t10/var/lib/mysql/atguigu-slow.log

得到访问次数最多的10SQL

mysqldumpslow-sc-t10/var/lib/mysql/atguigu-slow.log

得到按照时间排序的前10条里面含有左连接的查询语句

mysqldumpslow-st-t10-g"leftjoin"Nar/lib/mysql/atguigu-slowlog

另外建议在使用这些命令时结合和 more 使用,否则有可能出现

爆屏

mysqldumpslow-sr-t10/Nar/lib/mysql/atguigu-slow.log|more

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
14天前
|
监控 关系型数据库 MySQL
分析慢查询日志
【10月更文挑战第29天】分析慢查询日志
35 3
|
14天前
|
监控 关系型数据库 数据库
怎样分析慢查询日志?
【10月更文挑战第29天】怎样分析慢查询日志?
32 2
|
1月前
|
PyTorch 算法框架/工具
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
本文介绍了PyTorch中的F.softmax()和F.log_softmax()函数的语法、参数和使用示例,解释了它们在进行归一化处理时的作用和区别。
381 1
Pytorch学习笔记(七):F.softmax()和F.log_softmax函数详解
|
5月前
|
SQL 关系型数据库 MySQL
|
1月前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
24 3
|
1月前
|
数据可视化
Tensorboard可视化学习笔记(一):如何可视化通过网页查看log日志
关于如何使用TensorBoard进行数据可视化的教程,包括TensorBoard的安装、配置环境变量、将数据写入TensorBoard、启动TensorBoard以及如何通过网页查看日志文件。
194 0
|
3月前
|
jenkins 持续交付
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
jenkins学习笔记之三:使用jenkins共享库实现日志格式化输出
|
5月前
|
SQL 关系型数据库 MySQL
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
MySQL数据库——索引(3)-索引语法(创建索引、查看索引、删除索引、案例演示),SQL性能分析(SQL执行频率,慢查询日志)
60 2
|
5月前
|
JSON 中间件 数据格式
Gin框架学习笔记(六)——gin中的日志使用
Gin框架学习笔记(六)——gin中的日志使用
172 0
|
6月前
|
安全 Linux 调度
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
【后台开发】TinyWebser学习笔记(4)定时器、日志系统(单例模式)、封装互斥锁信号量
38 1