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)
相关推荐
踏月的造梦星球15 小时前
DMDPC 学习:架构、部署、运维与调优
运维·数据库·学习·架构
韩楚风16 小时前
【参天引擎】事务生命周期 / MVCC / Undo / ACID / 分布式事务 功能域整体解析
数据库·分布式·mysql·架构·cantian
renhongxia116 小时前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi
程序员无隅16 小时前
Coding Agent 为什么压缩上下文后还能继续工作?上下文模块设计拆解
java·开发语言·数据库
愿做无知一猿17 小时前
Nacos连接MySQL异常?DataGrip竟成救星
数据库·mysql
G.O.G.O.G17 小时前
LeetCode SQL 从入门到精通(MySQL)06(上)
数据库·sql·mysql·leetcode
千桐科技17 小时前
qData 数据中台开源版从 MySQL 到 Doris完成一次数据同步
大数据·mysql·开源·doris·数据中台·qdata
研究员子楚17 小时前
GEO行业发展标准体系白皮书V2.0-第10卷 · 全球篇:跨国标准协同与全球品牌语义治理框架
数据库·人工智能·microsoft·架构·geo
Omics Pro18 小时前
深度学习多组学互作:组内+组间
数据库·人工智能·深度学习·mysql·搜索引擎·自然语言处理
残*影20 小时前
如何优雅地保存MySQL数据变更历史?
数据库·mysql