MySQL-慢查询日志分析

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL-慢查询日志分析

慢日志查询

概述

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过 long_query_time 值的SQL,则会被记录到慢查询日志中,ong_query_time 的默认值为 10,意思是运行10S以上的语句。就会被认作是慢查询,默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。

查询日志相关参数

查看是否开启慢查询日志

SHOW VARIABLES LIKE '%slow_query_log%'

开启

SET GLOBAL slow_query_log = 1;

只对当前数据库生效, 如果重启后, 则会失效,如果永久生效,必须要修改配置文件

slow_query_log = 1


slow_query_log_file = 地址

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

SHOW VARIABLES LIKE 'long_query_time'


SET GLOBAL long_query_time = 4;

要断开连接后, 才能生效

SHOW GLOBAL VARIABLES LIKE 'long_query_time';


SELECT sleep(4)


SHOW GLOBAL STATUS LIKE '%slow_queries%';

慢日志分析工具

参数

-s:按照那种方式排序

        c:访问计数

        l:锁定时间

        r:返回记录

        al:平均锁定时间

        ar:平均访问记录数

        at:平均查询时间

-t:是top n的意思,返回多少条数据

-g:可以跟上正则匹配模式,大小写不敏感

示例

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

mysqldumpslow - s r - t 10 / DATABASE / mysql / mysql06_slow.log

得到访问次数最多的10个SQL

mysqldumpslow - s c - t 10 / DATABASE / mysql / mysql06_slow.log

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

mysqldumpslow - s t - t 10 - g “left join” / DATABASE / mysql / mysql06_slow.log

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

mysqldumpslow - s r - t 20 / mysqldata / mysql / mysql06 - slow.log | more

Show Profile分析

概述

Show Profile 是mysql提供的可以用来分析当前会话中SQL语句执行的资源消耗情况的工具,可用于SQL调优的测量。默认情况下处于关闭状态,并保存最近15次的运行结果。把一条SQL在mysql当中每一个环节耗费的时候都记录下来,默认该功能是关闭的,使用前需开启。默认保存最近15次运行的结果。

使用

  1. 查看当前版本是否支持
SHOW VARIABLES LIKE 'profiling';
  1. 打开 profile
SET profiling = ON
  1. 查看结果
SHOW PROFILES
  1. 诊断SQL
SHOW PROFILE cpu,block io FOR QUERY 88;

当出现以下选项时, 要进行优化

  • converting HEAP to MyIsAM,查询结果太大,内存都不够用了,往确磁盘上存在了
  • Creating tmp table,创建临时表,copy数据到临时表,用完再进行删除
  • Copying to tmp table on disk,把内存中临时表复制到磁盘, 危险操作
  • Locked,被锁定

全局查询日志

只允许在测试环境用, 不能在生产环境使用,在测试是可以把所有执行的SQL抓取出来查看

设置启用

SET GLOBAL general_log = 1;


SET GLOBAL log_output = 'TABLE'

此后所编写的SQL语句将会记录到mysql库里的 general_log 表中

SELECT * FROM mysql.general_log;
mysql - u root - p1234 -- DEFAULT - CHARACTER -SET = utf8
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
18天前
|
关系型数据库 MySQL 索引
mysql 分析5语句的优化--索引添加删除
mysql 分析5语句的优化--索引添加删除
14 0
|
20天前
|
存储 安全 关系型数据库
Mysql 的binlog日志的优缺点
MySQL的binlog(二进制日志)是一个记录数据库更改的日志文件,它包含了所有对数据库执行的更改操作,如INSERT、UPDATE和DELETE等。binlog的主要目的是复制和恢复。以下是binlog日志的优缺点: ### 优点: 1. **数据恢复**:当数据库出现意外故障或数据丢失时,可以利用binlog进行点恢复(point-in-time recovery),将数据恢复到某一特定时间点。 2. **主从复制**:binlog是实现MySQL主从复制功能的核心组件。主服务器将binlog中的事件发送到从服务器,从服务器再重放这些事件,从而实现数据的同步。 3. **审计**:b
|
30天前
|
SQL 关系型数据库 MySQL
MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复
对于MySQL数据库,可以使用二进制日志(binary log)进行时间点恢复。二进制日志是MySQL中记录所有数据库更改操作的日志文件。要进行时间点恢复,您需要执行以下步骤: 1. 确保MySQL配置文件中启用了二进制日志功能。在配置文件(通常是my.cnf或my.ini)中找到以下行,并确保没有被注释掉: Copy code log_bin = /path/to/binary/log/file 2. 在需要进行恢复的时间点之前创建一个数据库备份。这将作为恢复的基准。 3. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
100 1
|
29天前
|
SQL 关系型数据库 MySQL
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
【MySQL技术专题】「问题实战系列」深入探索和分析MySQL数据库的数据备份和恢复实战开发指南(8.0版本升级篇)
96 0
|
18天前
|
SQL 缓存 关系型数据库
mysql性能优化-慢查询分析、优化索引和配置
mysql性能优化-慢查询分析、优化索引和配置
83 1
|
24天前
|
缓存 关系型数据库 MySQL
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
MySQL 查询优化:提速查询效率的13大秘籍(索引设计、查询优化、缓存策略、子查询优化以及定期表分析和优化)(中)
|
4天前
|
机器学习/深度学习 前端开发 数据挖掘
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断(下)
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
74 11
|
10天前
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断2
工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
17 0
|
10天前
|
机器学习/深度学习 前端开发 数据挖掘
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
R语言计量经济学:工具变量法(两阶段最小二乘法2SLS)线性模型分析人均食品消费时间序列数据和回归诊断
39 0
|
22天前
|
SQL 存储 监控
日志问题精要:分析与总结
该文档讲述了应用系统日志记录的重要性和规则。主要目的是记录操作轨迹、监控系统状态和回溯故障。日志记录点包括系统入口、调用其他模块、调用结束、出口和出错时。内容应遵循UTF-8编码,避免敏感信息,按INFO级别记录,及时、完整且安全。日志输出要控制频率和长度,不影响系统性能,并按策略备份和清理。日志等级分为DEBUG、INFO、WARN、ERROR和FATAL。日志文件应有明确目录结构,大小有限制,并定期清理。注意事项包括输出异常堆栈、避免打印对象实例的hashCode、选择合适的日志框架和格式,并支持动态修改日志级别。还要实现链路追踪,确保在多线程环境中正确记录日志。
20 0