当前位置 主页 > 技术大全 >

    查看mysql 进程,监控当前数据库的连接情况

    栏目:技术大全 时间:2025-09-22 14:48


    在 MySQL 中查看进程(连接)状态,可以使用 SHOW PROCESSLIST 或 SHOW FULL PROCESSLIST 命令,这两个命令能帮助你监控当前数据库的连接情况、执行的 SQL 语句等信息,常用于排查连接拥堵、慢查询等问题。

    1. 查看所有进程(基础信息)

    sql
    SHOW PROCESSLIST;
    
     
    该命令会返回当前所有连接到 MySQL 服务器的进程信息,包含以下关键字段:
    • Id:进程(连接)的唯一标识 ID(终止进程时需要用到)
    • User:发起该进程的数据库用户名
    • Host:连接来源的主机(格式为 IP:端口
    • db:当前连接操作的数据库名(若未指定则为 NULL
    • Command:进程状态(如 Sleep 表示空闲、Query 表示正在执行查询、Connect 表示正在连接等)
    • Time:进程持续时间(单位:秒)
    • State:进程当前的具体状态(如 executing 表示正在执行 SQL)
    • Info:正在执行的 SQL 语句(长语句会被截断)

    2. 查看完整进程信息(包括完整 SQL)

    如果需要查看完整的 SQL 语句(避免被截断),使用:
    sql
    SHOW FULL PROCESSLIST;
    
     
    与 SHOW PROCESSLIST 的区别是:Info 字段会显示完整的 SQL 内容,适合分析长查询。

    3. 常用筛选场景

    可以结合 WHERE 条件筛选特定进程,例如:
    sql
    -- 查看运行时间超过 30 秒的进程(可能是慢查询)
    SHOW FULL PROCESSLIST WHERE Time > 30;
    
    -- 查看用户 'app_user' 的所有连接
    SHOW PROCESSLIST WHERE User = 'app_user';
    
    -- 查看正在执行查询的进程(排除空闲状态)
    SHOW FULL PROCESSLIST WHERE Command = 'Query';
    
    -- 查看操作 'order_db' 数据库的进程
    SHOW PROCESSLIST WHERE db = 'order_db';
    
     

    4. 终止异常进程

    如果发现某个进程长时间阻塞、占用资源过高或执行异常,可以通过 KILL 命令终止它:
    sql
    -- 终止 ID 为 123 的进程(将 123 替换为实际的 Id)
    KILL 123;
    
     

    注意事项

    • 权限限制:普通用户只能查看自己发起的进程,root 等管理员用户可以查看所有进程。
    • Sleep 状态过多:若大量进程处于 Sleep 状态(超过连接池配置),可能是应用程序未正确关闭连接,需检查连接池设置。
    • 锁等待:若 State 显示 Waiting for table lock 或 Locked,表示进程正在等待锁,需排查锁冲突(可结合 SHOW ENGINE INNODB STATUS 进一步分析)。
    通过这些命令,能有效监控 MySQL 的连接状态,及时发现并处理异常情况。
1分钟搞定MySQL部署!Docker最强实操指南,含所有常用命令和配置
忘记MySQL密码怎么办?别慌!用这一招跳过验证,轻松重置管理员权限
MySQL自增主键用完怎么办?从原理到实战,全面破解开发中的高频难题
MySQL权限混乱?这几个命令让你彻底理清用户清单与权限归属
你的数据库安全吗?读懂MySQL这几种日志,关键时刻能「救你一命」
MySQL性能上不去?八成是这里没配好!手把手教你搞定my.cnf核心配置
修改MySQL字段长度别乱来!这3个核心要点和1个致命陷阱,新手必看
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
你的MySQL数据库为什么总是又慢又卡?掌握这五大优化法则,查询速度快十倍!(上篇)
你的MySQL数据库为什么总是又慢又卡?掌握这五大优化法则,查询速度快十倍!(下篇)