当前位置: 首页 > news >正文

Mysql慢日志、慢SQL

慢查询日志

查看执行慢的SQL语句,需要先开启慢查询日志。
MySQL 的慢查询日志,记录在 MySQL 中响应时间超过阀值的语句(具体指运行时间超过 long_query_time 值的SQL。long_query_time 的默认值为10,意思是运行10秒以上(不含10秒)的语句)。

目的:发现执行时间特别长的SQL查询,进行优化。

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

慢日志常用配置项

1

2

3

4

5

6

7

8

slow_query_log       是否启用慢查询日志,默认为0,可设置为0、1,1表示开启。

slow_query_log_file  指定慢查询日志位置及名称,默认值为host_name-slow.log,可指定绝对路径。

long_query_time      慢查询执行时间阈值,超过此时间会记录,默认为10,单位为s。

log_output           慢查询日志输出目标,默认为file,即输出到文件。

log_timestamps       主要是控制 error log、slow log、genera log 日志文件中的显示时区,默认使用UTC时区,建议改为 SYSTEM 系统时区。

log_queries_not_using_indexes    是否记录所有未使用索引的查询语句,默认为off。

min_examined_row_limit           对于查询扫描行数小于此参数的SQL,将不会记录到慢查询日志中,默认为0。

log_slow_admin_statements        慢速管理语句是否写入慢日志中,管理语句包含 alter table、create index 等,默认为 off 即不写入

一般情况下,我们只需开启慢日志记录,配置下阈值时间,其余参数可按默认配置。对于阈值时间,可灵活调整,比如说可以设置为 1s 或 3s 。

查看是否开启慢查询日志

1

show variables like '%slow_query_log%';

开启慢查询(临时,当前会话有效)

1

set global slow_query_log='ON';

查看慢查询日志存放文件位置

1

show variables like '%slow_query_log_file%';

查看long_query_time阈值

1

show variables like '%long_query_time%';

设置long_query_time阈值(临时,当前会话有效)

1

set global long_query_time=3

直接修改配置文件(全局,需要重启服务,慎重)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

#编辑配置文件

vim /etc/my.cnf

# 修改配置项(如果没有就加上)

[mysqld]

slow_query_log = ON

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

long_query_time = 1

log_timestamps = SYSTEM

log_output = FILE

# 重启mysqld服务

systemctl restart mysqld

# 查看mysqld服务

systemctl status mysqld

测试

1

2

select sleep(5);

ls /var/lib/mysql/xxx-slow.log

慢查询日志文件分析

单条记录结构

单条记录结构:

1

2

3

4

5

# Time: 2024-03-01T17:12:40.156488+08:00

# User@Host: panda[panda] @  [192.168.72.1]  Id:     8

# Query_time: 5.000688  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 1

SET timestamp=1709284355;

select sleep(5);

字段说明:
慢查询日志以#作为起始符。
Time:查询的时间。
User@Host:表示用户 和 慢查询查询的ip地址。
如上所述,表示 root用户 localhost地址。
Query_time: 表示SQL查询持续时间, 单位 (秒)。
Lock_time: 表示获取锁的时间, 单位(秒)。
Rows_sent: 表示发送给客户端的行数。
Rows_examined: 表示:服务器层检查的行数。
set timestamp :表示 慢SQL 记录时的时间戳。
最后 select sleep(5) 则表示慢SQL语句。

慢查询日志分析-mysqldumpslow

MySQL自带了一个慢查询分析工具mysqldumpslow。
试了下不太好使。可以试试:
Navicat Monitor、signoz、hertzbeat 这些性能监测工具。

1

2

3

4

mysqldumpslow ­s c ­t 10 /var/run/mysqld/mysqld­slow.log # 取出使用最多的10条慢查询

mysqldumpslow ­s t ­t 3 /var/run/mysqld/mysqld­slow.log # 取出查询时间最慢的3条慢查询

mysqldumpslow ­s t ­t 10 ­g “left join” /database/mysql/slow­log #得到按照时间排序的前10条里面含有左连接的查询语句

mysqldumpslow ­s r ­t 10 ­g 'left join' /var/run/mysqld/mysqldslow.log # 按照扫描行数最多的

慢查询日志分析-Navicat Monitor

官网下载就行了。跟着指引配置即可。
很舒服,还可以自动提供一些运维建议。

查询分析

其他细节

记录管理语句

在 MySQL 中,慢查询日志中默认不记录管理语句,如:

1

alter table, analyze tablecheck table

不过可通过以下属性进行设置:

1

mysql> set global log_slow_admin_statements = "ON";

记录未走索引的SQL语句

在 MySQL 中,还可以设置将未走索引的SQL语句记录在慢日志查询文件中(默认为关闭状态)。通过下述属性即可进行设置:

1

2

mysql> set global log_queries_not_using_indexes = "ON";

Query OK, 0 rows affected (0.00 sec)

SQL 复制 全屏

慢查询日志输出位置

在MySQL中,日志输出格式有支持:FILE(默认),TABLE 两种,可进行组合使用。如下所示:

1

set global log_output = "FILE,TABLE";

这样设置会同时在 FILE, mysql库中的slow_log表中同时写入。

1

select * from mysql.slow_log;

http://www.lryc.cn/news/393527.html

相关文章:

  • 卫星网络——Walker星座简单介绍
  • C++ Lambda表达式第一篇, 闭合(Closuretype)
  • 移动校园(3):处理全校课程数据excel文档,实现空闲教室查询与课程表查询
  • 【MySQL】1.初识MySQL
  • 查看电脑显卡(NVIDIA)应该匹配什么版本的CUDA Toolkit
  • 优化:遍历List循环查找数据库导致接口过慢问题
  • NoSQL 之 Redis 配置与常用命令
  • 用SpringBoot打造坚固防线:轻松实现XSS攻击防御
  • 2024机器人科研/研发领域最新研究方向岗位职责与要求
  • 笔记:Newtonsoft.Json 序列化接口集合
  • 【Unity设计模式】✨使用 MVC 和 MVP 编程模式
  • CDH安装和配置流程
  • SpringMVC:SpringMVC执行流程
  • 如何在前端网页实现live2d的动态效果
  • 昇思25天学习打卡营第15天|linchenfengxue
  • 软考中级数据库系统工程师备考经验分享
  • Centos7删除MariaDB
  • 【Docker系列】Docker 镜像构建中的跨设备移动问题及解决方案
  • C++友元函数和友元类的使用
  • 黑马苍穹外卖技术亮点 详情
  • Python酷库之旅-第三方库Pandas(005)
  • javascripr如何设计弹出输入框并在网页内输出输入内容
  • gitee代码初次上传步骤
  • android调用openssl库
  • Hugging face Transformers(3)—— Tokenizer
  • kubernetes集群部署:环境准备及master节点部署(二)
  • 第8篇 智能合约的商业应用场景解析
  • Zabbix 配置grafana对接
  • 三相感应电机的建模仿真(2)基于ABC相坐标系S-Fun的仿真模型
  • 开源全新H5充值系统源码/自定义首页+充值页面/灵活对接上游渠道接口