MySQL自带慢日志排查慢查询SQL

yizhihongxing

以下是MySQL自带慢日志排查慢查询SQL的完整攻略:

什么是MySQL自带慢日志

MySQL自带了一个慢日志(slow query log)功能,可以记录执行时间超过指定阈值的SQL语句,这样可以帮助我们排查性能问题、发现慢查询、优化SQL语句等。

如何开启MySQL慢日志功能

  1. 修改my.cnf配置文件,在[mysqld]下添加如下两行代码:
slow_query_log = 1    # 开启慢日志功能
slow_query_log_file = /var/log/mysql/slow.log    # 慢日志输出文件路径
  1. 重启MySQL服务
sudo systemctl restart mysql
  1. 查看是否开启慢日志
show variables like '%slow_query_log%';

如何查看MySQL慢日志

MySQL慢日志输出的是一个文本文件,可以通过cat、less等命令查看。

cat /var/log/mysql/slow.log    # 查看慢日志全部内容

less /var/log/mysql/slow.log    # 分屏查看慢日志内容

可以看到每一行记录都包含了执行该SQL语句的时间、执行时间、返回行数、锁定时间等信息。

如何分析MySQL慢日志

我们可以通过分析慢日志文件中的SQL语句,找出哪些SQL语句执行时间过长,以及对这些SQL语句进行优化。

以下是一个慢日志示例:

# Query_time: 1.170887  Lock_time: 0.000021 Rows_sent: 5  Rows_examined: 555427
SELECT * FROM orders WHERE order_date > '2022-01-01';

可以看到,该SQL语句执行时间为1.170887秒,返回5行数据,查询了555427行。

我们可以对这个SQL语句进行优化,比如增加索引、减少查询范围等。

另一个示例:

# Query_time: 13.482723  Lock_time: 0.000031 Rows_sent: 0  Rows_examined: 3719866
DELETE FROM user WHERE user_id = 123;

可以看到,该SQL语句执行时间为13.482723秒,删除了一个用户。这个SQL语句执行时间过长,可以考虑减少删除范围、增加索引等优化。

综上所述,通过MySQL自带慢日志排查慢查询SQL,可以快速定位有性能问题的SQL,以及对这些SQL进行优化,提高数据库性能。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL自带慢日志排查慢查询SQL - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 一文了解MySQL中的多版本并发控制

    最近在阅读《认知觉醒》这本书,里面有句话非常打动我:通过自己的语言,用最简单的话把一件事情讲清楚,最好让外行人也能听懂。希望借助今天这篇文章,能用大白话说清楚这个相对比较底层和复杂的MVCC机制 作者:京东零售  李泽阳 最近在阅读《认知觉醒》这本书,里面有句话非常打动我:通过自己的语言,用最简单的话把一件事情讲清楚,最好让外行人也能听懂。 也许这就是大道至…

    MySQL 2023年4月13日
    00
  • MySQL优化数据库结构的3种方法

    MySQL是一款开源的关系型数据库管理系统,它常常被用来存储企业级应用程序的数据。对于MySQL,优化数据库结构是一项非常重要的工作,因为这可以大幅提升数据库的性能和稳定性,同时也可以减少出错的可能性。 本文将介绍MySQL优化数据库结构的三种方法,包括表的优化、索引的优化和分表操作。 表的优化 MySQL数据库中的表是数据库中非常重要的一个组成部分,因此表…

    MySQL 2023年3月10日
    00
  • Java Web十条开发实用小知识

    下面我将为您讲解Java Web十条开发实用小知识的完整攻略。 一、使用Maven管理依赖 在Java Web开发中,我们需要依赖很多第三方库文件,而Maven可以帮助我们自动管理这些依赖,降低开发难度。在项目根目录下的pom.xml文件中添加依赖,并使用命令mvn package清理依赖库。 二、使用Spring Framework管理Java对象 Spr…

    MySQL 2023年5月19日
    00
  • MySQL开启慢查询方法及实例

    我来为您详细讲解如何开启MySQL的慢查询功能及示例说明。 什么是MySQL的慢查询? MySQL的慢查询是一种用于检测和记录MySQL数据库性能的工具,它会对执行时间超过特定阈值的查询进行记录,方便定位和优化慢查询问题。 如何开启MySQL的慢查询功能? 以下是开启MySQL慢查询的步骤: 登录MySQL服务器,并进入到mysql命令行客户端; 执行如下命…

    MySQL 2023年5月19日
    00
  • MySQL字符集和校对规则详解

    MySQL字符集和校对规则是数据库中的重要概念,影响着数据库中数据的存储、排序以及比较等操作。本文将对MySQL字符集和校对规则进行详细解释,并提供相应的实例说明。 MySQL字符集 MySQL字符集是指数据库中的一组字符集合,决定了数据库中能够存储哪些字符以及如何存储这些字符。MySQL支持很多种不同的字符集,包括 ASCII、Latin-1、UTF-8 …

    MySQL 2023年3月10日
    00
  • mysql Event Scheduler: Failed to open table mysql.event

    MySQL Event Scheduler是MySQL提供的一个可以周期性地执行SQL语句或调用存储过程的功能。当使用Event Scheduler时,有可能会遇到“Failed to open table mysql.event”的错误,本文将详细讲解如何解决这个错误。 问题原因 MySQL Event Scheduler需要在mysql.event表中记…

    MySQL 2023年5月18日
    00
  • MySQL命令行界面中出现字符错误提示的原因及解决方法

    当我们在MySQL命令行进程中进行操作时,有时会出现字符错误的提示,这主要是由于终端的字符集和MySQL服务器的字符集不匹配所造成的。在这种情况下,需要对终端的字符集和MySQL服务器的字符集进行相应的设置,下面就详细讲解一下如何解决这个问题。 确定终端支持的字符集 在终端中输入以下命令,可以查看当前终端支持的字符集: $ locale charmap 执行…

    MySQL 2023年5月18日
    00
  • MySQL锁机制/管理(并发锁,行锁,表锁,预加锁,全局锁等等)-转

    百度博客居然无缘无故被封了。。。。。搬家中。。。  转自 MySQL实验室 1. MySQL中并发和隔离控制机制 Meta-data元数据锁:在table cache缓存里实现的,为DDL(Data Definition Language)提供隔离操作。一种特别的meta-data元数据类型,叫Name Lock。(SQL层) 表级table-level数据…

    MySQL 2023年4月13日
    00
合作推广
合作推广
分享本页
返回顶部