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.rhkb.cn/news/370694.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用C#调用Windows API向指定窗口发送按键消息详解与示例

文章目录 1. 按键消息的定义及功能2. 引入所需的命名空间3. 定义Windows API函数4. 定义发送消息的方法5. 获取窗口句柄6. 调用API发送按键消息7. 使用示例注意事项总结 在C#中调用Windows API向指定窗口发送按键消息是一种常见的操作,这通常用于自动化脚本、游戏辅…

讲个SystemVerilog随机约束小坑

正文 记录个在写SystemVerilog随机约束时遇到的一个小坑,如果没有认真去查看随机结果是否符合预期,还真不容易发现。 为了方便讲述,写了如下示例代码。类cl_a里有个随机变量aa,初始值为222。在module top里对类cl_a例化并进行约…

短链接学习day2

用户敏感信息脱敏展示: RequestParam 和 PathVariable的区别 注解是用于从request中接收请求的,两个都可以接收参数,关键点不同的是RequestParam 是从request里面拿取值,而 PathVariable 是从一个URI模板里面来填充。 PathVari…

[leetcode hot 150]第一百一十七题,填充每个节点的下一个右侧节点

题目: 给定一个二叉树: struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL 。 初始状态下&#x…

数据结构试卷(一)王彬

一、单选题(每题 2 分,共20分) 栈和队列的共同特点是( )。 A.只允许在端点处插入和删除元素 B.都是先进后出 C.都是先进先出 D.没有共同点 用链接方式存储的队列,在进行插入运算时( ). A. 仅修改头指针   …

深入理解C# log4Net日志框架:功能、使用方法与性能优势

文章目录 1、log4Net的主要特性2、log4Net框架详解配置日志级别 3、log4Net的使用示例4、性能优化与对比5、总结与展望 在软件开发过程中,日志记录是一个不可或缺的功能。它可以帮助开发者追踪错误、监控应用程序性能,以及进行调试。在C#生态系统中&…

STM32-LED和蜂鸣器

本内容是基于江协科技STM32视频整理而得。 1. LED和蜂鸣器 1.1 LED和蜂鸣器简介 LED:发光二极管,正向导通点亮,反向通电不亮 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。 无…

Linux服务器升级openssh9.8最新版全过程,及遇到问题处理

前言:由于2024年7月1日,openssh发布了最新版9.8,所以服务器需要升级一下,特此做个详细记录: 由于下载最新版openssh9.8,需要将openssl也一并进行升级 一、下载openssh最新版本与openssl对应版本&#xff…

易保全推动区块链应用与AI融合创新发展

数字化时代,区块链和人工智能技术作为当下两大“黑科技”,两者的深度结合,正在为企业数字化转型带来前所未有的机遇。 易保全作为国内权威的电子数据存证保全机构,积极探索两者的融合之道,将区块链的去中心化、不可篡…

Java项目:基于SSM框架实现的高校共享单车管理系统分前后台【ssm+B/S架构+源码+数据库+开题报告+任务书+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的高校共享单车管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…

好消息!Stable Diffusion 3 允许商业化,很快开源更大版本模型

7月6日凌晨,著名开源大模型平台Stability AI修改了社区许可协议,最新发布的文生图模型Stable Diffusion 3 Medium允许商业化(以下简称“SD3-M”)。 如果企业、个人开发者每年收入低于100万美元(大约726万元人民币&…

竞赛选题 卷积神经网络手写字符识别 - 深度学习

文章目录 0 前言1 简介2 LeNet-5 模型的介绍2.1 结构解析2.2 C1层2.3 S2层S2层和C3层连接 2.4 F6与C5层 3 写数字识别算法模型的构建3.1 输入层设计3.2 激活函数的选取3.3 卷积层设计3.4 降采样层3.5 输出层设计 4 网络模型的总体结构5 部分实现代码6 在线手写识别7 最后 0 前言…

视频技术助力智慧城市一网统管:视频资源整合与智能化管理

随着信息技术的飞速发展,智慧城市已成为现代城市发展的重要方向。在智慧城市建设中,一网统管作为城市管理的重要策略,通过整合各类信息资源,实现资源的优化配置和问题的快速响应。其中,视频技术作为一网统管场景中的关…

SpringBoot项目练习

文章目录 SpringBootVue后台管理系统所需软件下载、安装、版本查询Vue搭建一个简单的Vue项目 Spring项目1项目架构 SpringBootVue后台管理系统 学习视频: https://www.bilibili.com/video/BV1U44y1W77D/?spm_id_from333.337.search-card.all.click&vd_sourcec…

linux 内核打印log太多咋办?

有时候发现,linux 内核打印太多消息了,对有用消息造成了干扰,如果你一个个源文件去关闭打印太麻烦了,有没有一种更方便的方式来关闭这些消息呢? 对这个需求,内核提供了一个强大而又灵活的方式,…

如何有效管理你的Facebook时间线?

Facebook作为全球最大的社交平台之一,每天都有大量的信息和内容在用户的时间线上展示。有效管理你的Facebook时间线,不仅可以提升用户体验,还能够帮助你更好地控制信息流和社交互动。本文将探讨多种方法和技巧,帮助你有效管理个人…

FreeBSD@ThinkPad x250因电池耗尽关机后无法启动的问题存档

好几次碰到电池耗尽FreeBSD关机,再启动,网络通了之后到了该出Xwindows窗体的时候,屏幕灭掉,网络不通,只有风扇在响,启动失败。关键是长按开关键后再次开机,还是启动失败。 偶尔有时候重启到单人…

Mean teacher are better role models-论文笔记

论文笔记 资料 1.代码地址 2.论文地址 https://arxiv.org/pdf/1703.01780 3.数据集地址 CIFAR-10 https://www.cs.utoronto.ca/~kriz/cifar.html 论文摘要的翻译 最近提出的Temporal Ensembling方法在几个半监督学习基准中取得了最先进的结果。它维护每个训练样本的标签…

笔记14:程序中的循环结构

生活中的循环现象: -日复一日,年复一年 -春夏秋冬,四季交替 -周日,周一,周二,周三,周四,周五,周六 -人生是一个轮回,多年后,又会回到最初的原点 …

每日一题~ (判断是否是合法的出栈序列)

大概的题意: 将 1-n 按照顺序进栈,问 输入的序列是否是合法的出栈序列。 遍历序列,如果当前这个值a小于 栈顶的值,说明它还未进栈(因为我们是按照顺序进栈的),所以我们将 一些元素进栈&#xff…