mysql异常占用资源排查

通过执行日志与连接信息排查

  1. 查看是否开启日志记录

    sql 复制代码
    mysql> show global variables like '%general%';
    +------------------+---------------+
    | Variable_name    | Value         |
    +------------------+---------------+
    | general_log      | OFF           |
    | general_log_file | localhost.log |
    +------------------+---------------+
    2 rows in set (0.03 sec)
  2. 开启sql记录

    sql 复制代码
    mysql> set global general_log=on;
    Query OK, 0 rows affected (0.00 sec)
  3. 查看日志位置观察异常sql

    sql 复制代码
    mysql> show global variables like '%general%';
    +------------------+---------------+
    | Variable_name    | Value         |
    +------------------+---------------+
    | general_log      | ON            |
    | general_log_file | localhost.log |
    +------------------+---------------+
  4. 查看当前连接数

    sql 复制代码
    mysql> SHOW STATUS LIKE 'Threads_connected';
    +-------------------+-------+
    | Variable_name     | Value |
    +-------------------+-------+
    | Threads_connected | 2     |
    +-------------------+-------+
    1 row in set (0.04 sec)
  5. 查看哪些客户端连接到了mysql

    sql 复制代码
    mysql> SHOW PROCESSLIST;
    +-------+-------------+----------------------+------------------+---------+------+--------------------------+------------------+----------+
    | Id    | User        | Host                 | db               | Command | Time | State                    | Info             | Progress |
    +-------+-------------+----------------------+------------------+---------+------+--------------------------+------------------+----------+
    |     1 | system user |                      | NULL             | Daemon  | NULL | InnoDB purge worker      | NULL             |    0.000 |
    |     2 | system user |                      | NULL             | Daemon  | NULL | InnoDB purge coordinator | NULL             |    0.000 |
    |     3 | system user |                      | NULL             | Daemon  | NULL | InnoDB purge worker      | NULL             |    0.000 |
    |     4 | system user |                      | NULL             | Daemon  | NULL | InnoDB purge worker      | NULL             |    0.000 |
    |     5 | system user |                      | NULL             | Daemon  | NULL | InnoDB shutdown handler  | NULL             |    0.000 |
    | 98821 | root        | 192.168.2.42:53790   | test_cloud       | Sleep   |    2 |                          | NULL             |    0.000 |
    | 98824 | root        | 192.168.2.14:64112   | NULL             | Query   |    0 | Init                     | SHOW PROCESSLIST |    0.000 |
    +-------+-------------+----------------------+------------------+---------+------+--------------------------+------------------+----------+
    7 rows in set (0.05 sec)

通过慢sql信息排查

  1. 查看是否开启慢sql记录

    sql 复制代码
    mysql> show global variables like '%slow_query_log%';
    +---------------------+--------------------+
    | Variable_name       | Value              |
    +---------------------+--------------------+
    | slow_query_log      | OFF                |
    | slow_query_log_file | localhost-slow.log |
    +---------------------+--------------------+
    2 rows in set (0.05 sec)
  2. 开启慢sql记录

    sql 复制代码
    mysql> set global slow_query_log=1;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show global variables like '%slow_query_log%';
    +---------------------+--------------------+
    | Variable_name       | Value              |
    +---------------------+--------------------+
    | slow_query_log      | ON                 |
    | slow_query_log_file | localhost-slow.log |
    +---------------------+--------------------+
    2 rows in set (0.05 sec)
  3. 关闭慢sql记录

    sql 复制代码
    mysql> set global slow_query_log=0;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show global variables like '%slow_query_log%';
    +---------------------+--------------------+
    | Variable_name       | Value              |
    +---------------------+--------------------+
    | slow_query_log      | OFF                 |
    | slow_query_log_file | localhost-slow.log |
    +---------------------+--------------------+
    2 rows in set (0.05 sec)

修改slow_launch_time与 long_query_time

  • slow_launch_time:定义一个客户端连接启动所花费的时间阈值。如果一个客户端连接的启动时间超过了这个阈值,MySQL 将认为这是一个慢连接启动,并将其记录到慢查询日志中。

  • long_query_time:定义一个 SQL 查询执行所花费的时间阈值。如果一个 SQL 查询的执行时间超过了这个阈值,MySQL 将认为这是一个慢查询,并将其记录到慢查询日志中。

这两个参数都可以在 MySQL 的配置文件中进行设置,通常在 my.cnf 或 my.ini 文件中定义。例如:

bash 复制代码
slow_launch_time = 2
long_query_time = 1

也可以通过sql进行查看和修改:

  1. 查看慢连接判定时间:

    sql 复制代码
    mysql> show variables like 'slow_launch_time%';
    +------------------+-------+
    | Variable_name    | Value |
    +------------------+-------+
    | slow_launch_time | 2     |
    +------------------+-------+
    1 row in set (0.04 sec)
  2. 修改慢连接判定时间:

    sql 复制代码
    mysql> set global slow_launch_time=3;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show variables like 'slow_launch_time%';
    +------------------+-------+
    | Variable_name    | Value |
    +------------------+-------+
    | slow_launch_time | 3     |
    +------------------+-------+
    1 row in set (0.04 sec)
  3. 查看慢sql判定时间

    sql 复制代码
    mysql> show variables like 'long_query_time%';
    +-----------------+-----------+
    | Variable_name   | Value     |
    +-----------------+-----------+
    | long_query_time | 10.000000 |
    +-----------------+-----------+
    1 row in set (0.05 sec)
  4. 修改慢sql判定时间

    sql 复制代码
    mysql> set long_query_time=3;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> show variables like 'long_query_time%';
    +-----------------+----------+
    | Variable_name   | Value    |
    +-----------------+----------+
    | long_query_time | 3.000000 |
    +-----------------+----------+
    1 row in set (0.04 sec)
相关推荐
带娃的IT创业者16 分钟前
《Python实战进阶》专栏 No.3:Django 项目结构解析与入门DEMO
数据库·python·django
人间打气筒(Ada)33 分钟前
MySQL优化
数据库·mysql
小蒜学长1 小时前
医疗报销系统的设计与实现(代码+数据库+LW)
数据库·spring boot·学习·oracle·课程设计
终端行者1 小时前
kubernetes1.28部署mysql5.7主从同步,使用Nfs制作持久卷存储,适用于centos7/9操作系统,
数据库·容器·kubernetes
羊小猪~~1 小时前
MYSQL学习笔记(九):MYSQL表的“增删改查”
数据库·笔记·后端·sql·学习·mysql·考研
我们的五年1 小时前
MySQL 架构
数据库·mysql·开源
大地爱1 小时前
在Ubuntu 22.04 LTS 上安装 MySQL两种方式:在线方式和离线方式
mysql·ubuntu·adb
橘猫云计算机设计2 小时前
基于SSM的《计算机网络》题库管理系统(源码+lw+部署文档+讲解),源码可白嫖!
java·数据库·spring boot·后端·python·计算机网络·毕设
ok0602 小时前
oracle怎么创建定时任务
数据库·oracle
阿桢呀2 小时前
Redis实战篇《黑马点评》5
数据库·redis·缓存