MySQL-慢查询日志分析

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 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
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化以及慢查询优化
通过本文的介绍,希望您能够深入理解MySQL索引优化和慢查询优化的方法,并在实际应用中灵活运用这些技术,提升数据库的整体性能。
47 18
|
1天前
|
SQL 存储 关系型数据库
Mysql并发控制和日志
通过深入理解和应用 MySQL 的并发控制和日志管理技术,您可以显著提升数据库系统的效率和稳定性。
19 10
|
3天前
|
SQL 关系型数据库 MySQL
MySQL 窗口函数详解:分析性查询的强大工具
MySQL 窗口函数从 8.0 版本开始支持,提供了一种灵活的方式处理 SQL 查询中的数据。无需分组即可对行集进行分析,常用于计算排名、累计和、移动平均值等。基本语法包括 `function_name([arguments]) OVER ([PARTITION BY columns] [ORDER BY columns] [frame_clause])`,常见函数有 `ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`, `SUM()`, `AVG()` 等。窗口框架定义了计算聚合值时应包含的行。适用于复杂数据操作和分析报告。
35 11
|
6天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化以及慢查询优化
通过本文的介绍,希望您能够深入理解MySQL索引优化和慢查询优化的方法,并在实际应用中灵活运用这些技术,提升数据库的整体性能。
17 7
|
5天前
|
缓存 关系型数据库 MySQL
MySQL 索引优化与慢查询优化:原理与实践
通过本文的介绍,希望您能够深入理解MySQL索引优化与慢查询优化的原理和实践方法,并在实际项目中灵活运用这些技术,提升数据库的整体性能。
26 5
|
14天前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
17天前
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
|
29天前
|
SQL 关系型数据库 MySQL
【赵渝强老师】MySQL的全量日志文件
MySQL全量日志记录所有操作的SQL语句,默认禁用。启用后,可通过`show variables like %general_log%检查状态,使用`set global general_log=ON`临时开启,执行查询并查看日志文件以追踪SQL执行详情。
|
1月前
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
278 30
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
8天前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。