MySQL 慢日志相关知识总结

关于 MySQL 慢日志相关知识总结的攻略,主要包含以下几点:

什么是 MySQL 慢日志?

MySQL 慢日志是 MySQL 服务器记录下来的执行时间超过阈值的 SQL 语句日志。这个阈值可以在配置文件中进行设置,通常设置为一定的毫秒数,比如 100 毫秒。当 MySQL 服务器执行一个 SQL 语句的时间超过这个阈值时,就会将这个 SQL 语句记录在慢日志中。

MySQL 慢日志的作用是什么?

MySQL 慢日志的作用主要是用于性能分析和优化,可以帮助我们找出执行时间较长的 SQL 语句,以及哪些 SQL 语句频繁被执行,从而确定优化的重点和方向。

如何配置 MySQL 慢日志?

配置 MySQL 慢日志需要修改 MySQL 配置文件 my.cnf。具体步骤如下:

  1. 打开 my.cnf 文件,找到 [mysqld] 部分。
  2. 在 [mysqld] 部分中添加 slow_query_log = 1 和 slow_query_log_file = /var/log/mysql/mysql-slow.log。
  3. 设置 long_query_time,表示慢查询的时间阈值,单位为秒。比如 long_query_time = 2 表示执行时间超过两秒的 SQL 语句都会被记录在慢日志中。

如何分析 MySQL 慢日志?

分析 MySQL 慢日志需要使用工具,常用的有 MySQL 自带的 mysqldumpslow 和 pt-query-digest。

使用 mysqldumpslow 分析慢日志

mysqldumpslow 是 MySQL 自带的一个工具,可以帮助我们分析 MySQL 慢日志。具体使用方法如下:

mysqldumpslow -a -s t /var/log/mysql/mysql-slow.log

其中,-a 表示将所有查询的输出到结果中,-s t 表示按执行时间排序。执行上述命令会将 MySQL 慢日志中的所有查询按照执行时间从长到短排序输出。

使用 pt-query-digest 分析慢日志

pt-query-digest 是一个第三方工具,可以更加灵活和全面地分析 MySQL 慢日志。具体使用方法如下:

pt-query-digest /var/log/mysql/mysql-slow.log

执行上述命令可以将 MySQL 慢日志分析成多个视图,显示的信息更加全面和详细。

示例说明

下面给出两个示例说明,分别使用 mysqldumpslow 和 pt-query-digest 分析 MySQL 慢日志。

  1. 使用 mysqldumpslow 分析 MySQL 慢日志,并按执行时间排序输出。
mysqldumpslow -a -s t /var/log/mysql/mysql-slow.log

输出结果如下:

Count: 1  Time=31.59s (31s)  Lock=0.00s (0s)  Rows=0.0 (0), users@localhost
  SELECT * FROM users WHERE id = 100;

上述命令表示,在 MySQL 慢日志中发现了一条执行时间为 31.59 秒的 SQL 语句,是一条查询语句,查询的表是 users。这个查询语句执行了一次。

  1. 使用 pt-query-digest 分析 MySQL 慢日志,找出最频繁的前 5 条 SQL 语句。
pt-query-digest /var/log/mysql/mysql-slow.log --limit=5 --order-by=Query_time:sum

输出结果如下:

# Profile
# Rank Query ID           Response time Calls R/Call Apdx V/M   Item
# ==== ================== ================ ===== ======= ==== ===== =============================
#    1 0x3187513CA4C9A3DE 138.8866  43.5%    20  6.9443 0.00  select * from table1
#    2 0x0FCFFEE6D8EEF4A2  76.3412  23.9%    29  2.6324 0.00  insert into table2 values (?, ?)
#    3 0x31E6BDB8BF0F044F  46.1075  14.4%    23  2.0026 0.00  select * from table3
#    4 0xD945806CCB0A819C  35.9712  11.2%    25  1.4388 0.00  select * from table4 where id = ?
#    5 0x23F59A75E9F6E98B   9.5435   3.0%     8  1.1929 0.00  update table5 set status = ? where id = ?

上述命令表示,将 MySQL 慢日志分析为多个视图,并按执行时间从长到短排序,输出前 5 条 SQL 语句,这 5 条 SQL 语句是执行时间最长的 SQL 语句。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL 慢日志相关知识总结 - Python技术站

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

相关文章

  • 使用 Binlog 和 Canal 从 MySQL 抽取数据

    转载自: https://blog.csdn.net/zjerryj/article/details/77152226   技术点: Apache Sqoop Ali Canal https://github.com/alibaba/canal Hive 0.14 支持 insert update delete , 2.0 后支持 Streaming Mut…

    MySQL 2023年4月16日
    00
  • mysql 计算函数详情

    当使用 MySQL 编写查询语句时,可能需要使用一些计算函数来对数据进行处理。MySQL 提供了许多计算函数,包括数学函数、字符函数、日期函数等等。本文将对 MySQL 的计算函数进行详细讲解。 数学函数 ABS ABS() 函数用于返回一个数的绝对值。 示例,返回 -10 和 10 的绝对值: SELECT ABS(-10); SELECT ABS(10)…

    database 2023年5月22日
    00
  • mysql -sql语句not in判断条件注意事项

    sql语句not in判断条件注意事项   问题描述:mysql数据库,存在两个表org表和kdorg表,用于存储组织信息。现在我需要从org表找出组织,条件为该组织不在kdorg表里。   sql语句:select o.orgno o.orgname from org o where orgno not in(select kd.orgno from kd…

    MySQL 2023年4月16日
    00
  • redis学习之——redis.conf配置(基本)文件学习

    # Redis configuration file example # Note on units: when memory size is needed, it is possible to specify //1  配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit   // 2  对大小写不敏感 # it in the usu…

    Redis 2023年4月16日
    00
  • python中第三方库redis.py简介

    “”” Redis简介: 这是一个基于内存的高效的键值型非关系型数据库,存取效率极高,而且支持 多种存储数据结构,使用也比较简单。 python中提供连接redis的第三方库redis.py。 在这个库中有两个类Redis和StrictRedis来实现Redis的命令操作。 Redis是StrictRedis的子类,主要功能是向后兼容旧版本库里的几个方法。 …

    Redis 2023年4月16日
    00
  • SpringBoot MongoDB 索引冲突分析及解决方法

    SpringBoot MongoDB 索引冲突分析及解决方法 背景 在使用 SpringBoot 集成 MongoDB 的过程中,我们常常会遇到索引报错的问题。这是因为在一个 MongoDB 集合中创建了多个索引,这会导致索引之间冲突,进而产生异常。 分析 为了解决索引冲突的问题,我们需要从以下几个方面进行分析: 1. 查看 MongoDB 集合中的索引 可…

    database 2023年5月22日
    00
  • SpringBoot整合MyBatis-Plus乐观锁不生效的问题及解决方法

    下面我将详细讲解SpringBoot整合MyBatis-Plus乐观锁不生效的问题及解决方法。 问题描述 在使用SpringBoot整合MyBatis-Plus过程中,我们很容易遇到乐观锁不生效的问题。即在多线程操作同一条记录时,最后一次更新的操作会覆盖之前的更新,导致乐观锁失效。 问题原因 MyBatis-Plus默认使用的是OptimisticLockI…

    database 2023年5月21日
    00
  • 白嫖一个月的ES,完成了与MySQL的联动

    前言 《腾讯云 x Elasticsearch三周年》活动来了。文章写之前的思路是:在腾讯云服务器使用docker搭建ES。但是理想很丰满,显示很骨感,在操作过程中一波三折,最后还是含着泪美滋滋地,白嫖了一个月的腾讯云ES服务。 最后就是利用腾讯云的Elasticsearch和Kibana,和我在腾讯云服务器上搭建MySQL进行了一波联动,完成了数据库内部指…

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