MySQL慢日志的介绍以及如何使用问题

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL慢日志的介绍以及如何使用问题

一,慢查询日志的介绍

MySQL数据库有一个“慢查询日志”功能,用来记录查询时间超过某个设定值的SQL,可以快速帮助我们找到需要优化的SQL位置。

二,慢查询日志开启

第一步,先通过指令查看一下自己的慢查询日志是否已经开启,如下:
slow_query_log 字段对应的value值为OFF,则表示慢查询日志为关闭状态。
slow_query_log_file 字段的value值代表的是MySQL数据库慢查询日志的存储路径,可不设置该参数,系统会自动给一个缺省文件。
image.png

查看慢查询的阈值
long_query_time 慢查询阈值,当查询时间多于设定的阈值时,记录日志,单位为秒
image.png

第二步 ,就是开启慢查询日志功能,一般分为临时开启和永久开启;

  • 临时开启
    指令:set global slow_query_log = ON;
    指令:set global long_query_time = 10;
    临时开启慢查询日志功能,设置查询时间超过10秒的语句记录日志,重启MySQL后失效。
  • 永久开启
    修改/etc/mysql/my.cnf配置,重启Mysql,永久生效。配置如下:
    [mysqld]
    slow_query_log = ON
    slow_query_log_file= /var/log/mysql/slow.log
    long_query_time = 10

第三步:慢查新日志的内容如何看

# Time: 2018-08-16T00:00:04.821003+08:00
# User@Host: zwfwroot[zwfwroot] @ 19.15.0.30 [19.15.0.30]  Id: 67508
# Schema: gdqlk  Last_errno: 0  Killed: 0
# Query_time: 14.344185  Lock_time: 0.000028  Rows_sent: 237064  Rows_examined: 237064  Rows_affected: 0
# Bytes_sent: 96078006
SET timestamp=1534348804;
SELECT * FROM `audit_catalog_lobby`;

如上是慢日志里其中一条SQL的记录内容,可以看到有时间戳,用户,查询时长及具体的SQL等,内容其实是很齐全的。但是存在一个问题,慢日志里往往有许多SQL,不可能一条一条SQL看过去,我们需要将所有的慢SQL分组统计后在进行分析。

  • Query_time:sql执行的时间,越长则代表越慢
  • Lock_time:mysql服务器阶段(不是在存储引擎阶段)等待表锁的时间
  • Rows_sent:查询返回的行数
  • Rows_examined:查询检查的行数
    第四步:如何在慢查询日志中筛选特定的慢查询语句,有个mysqldumpslow命令可以在慢查询日志里筛选特定的慢查新语句。执行环境为:Linux下的shell下执行。
mysqldumpslow -s t -t 10 -g "select"/var/lib/mysql/conf-db-fat-slow.log

指令中的参数说明:
-s:表示按照何种方式排序
c:访问次数
l:锁定时间
r:返回记录
t:查询时间
al:平均锁定时间
ar:平均返回记录数
at:平均查询时间
-t:top n的意思,返回前面多少条数据
-g:后边可以写一个正则匹配模式,大小写不敏感的其他具体用法可以使用mysqldumpslow -h去学习。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
14天前
|
监控 关系型数据库 MySQL
《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)
《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)
36 3
|
26天前
|
存储 安全 关系型数据库
Mysql 的binlog日志的优缺点
MySQL的binlog(二进制日志)是一个记录数据库更改的日志文件,它包含了所有对数据库执行的更改操作,如INSERT、UPDATE和DELETE等。binlog的主要目的是复制和恢复。以下是binlog日志的优缺点: ### 优点: 1. **数据恢复**:当数据库出现意外故障或数据丢失时,可以利用binlog进行点恢复(point-in-time recovery),将数据恢复到某一特定时间点。 2. **主从复制**:binlog是实现MySQL主从复制功能的核心组件。主服务器将binlog中的事件发送到从服务器,从服务器再重放这些事件,从而实现数据的同步。 3. **审计**:b
|
2月前
|
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. 找到您要恢复到的时间点的二进制日志文件和位置。可以通过执行以下命令来查看当前的二进制日志文件和位
103 1
|
1月前
|
SQL 监控 关系型数据库
深入理解MySQL日志:通用查询、慢查询和错误日志详解
深入理解MySQL日志:通用查询、慢查询和错误日志详解
|
26天前
|
SQL 关系型数据库 MySQL
Mysql 的binlog日志的原理【4月更文挑战第1天】
【4月更文挑战第1天】 MySQL的binlog(二进制日志)是一个记录数据库更改的日志文件,它主要用于复制和恢复操作。以下是binlog日志的工作原理的简要概述: **事件写入**:当MySQL服务器执行一个事务时,它会将该事务中所有对数据库的修改操作(如INSERT、UPDATE和DELETE等)记录为一个事件(event)。这些事件包含了修改操作的相关信息,如操作类型、涉及的表、修改的行等。
|
1月前
|
SQL 存储 关系型数据库
轻松入门MySQL:深入理解MySQL日志,二进制日志、中继日志、回滚日志和重做日志(19)
轻松入门MySQL:深入理解MySQL日志,二进制日志、中继日志、回滚日志和重做日志(19)
|
3天前
|
DataWorks 关系型数据库 MySQL
DataWorks产品使用合集之在DataWorks中,如何通过PolarDB for MySQL来查看binlog日志
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
13 1
|
4天前
|
SQL 监控 关系型数据库
【MySQL学习】MySQL的慢查询日志和错误日志
【MySQL学习】MySQL的慢查询日志和错误日志
|
7天前
|
SQL 存储 关系型数据库
MySQL三大日志详解
MySQL三大日志详解
11 0
|
24天前
|
存储 SQL 关系型数据库
mysql数据库日志
mysql数据库日志