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)
相关推荐
数智园区合作社7 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
lbb 小魔仙8 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain3769 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你02149 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川9 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化
数据库小组9 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制
zhangjw3410 小时前
1-5 PostgreSQL 数据类型全集:基础类型、字符串、数值、时间类型
数据库·postgresql
王中阳Go10 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型
cnskylee11 小时前
【MySQL】麒麟V10 SP3系统安装MySQL-Commercial-8.0.46
数据库·mysql·adb
梦幻通灵11 小时前
修改MySQL数据库递增序列【持续更新】
数据库·mysql