You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看MySQL中已卡住20000+秒的查询?

定位MySQL中长时间卡住的查询方法
  • 获取完整的卡住进程信息
    截图里的进程列表大概率截断了SQL语句,执行以下命令查看完整内容:
    SHOW FULL PROCESSLIST;
    或者通过系统表精准筛选超时进程:
    SELECT id, user, host, db, command, time, state, info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE time > 20000;
    其中info字段就是卡住的完整SQL语句。

  • 分析查询执行效率
    拿到目标SQL后,用EXPLAIN查看执行计划,判断是否存在索引缺失、全表扫描、关联逻辑不合理等问题:
    EXPLAIN 你的卡住SQL语句;
    重点关注type(访问类型,ALL代表全表扫描,效率极低)、key(是否用到有效索引)、rows(预估扫描行数)这几个核心字段。

  • 排查锁等待问题
    如果是事务锁导致的卡住,先查询长时间运行的事务:
    SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX WHERE trx_started < NOW() - INTERVAL 20000 SECOND;
    再查看锁资源和锁等待关系:
    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
    SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
    这些表能帮你明确阻塞源(谁持有锁)和被阻塞的进程。

  • 临时应急处理
    确认是无效查询后,可执行KILL 进程ID;终止卡住的进程,但需注意:未提交的事务会触发回滚,可能影响业务,操作前务必确认风险。

内容的提问来源于stack exchange,提问作者Ujjwal Raijada

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 04:40:25