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

如何在MySQL中查找当前执行且处于锁/闩锁状态的查询

查询MySQL中处于锁或闩锁状态的正在执行查询

可以结合MySQL的系统视图,编写以下SQL语句筛选出当前正在执行且处于锁/闩锁等待状态的查询:

SELECT
    pl.id AS process_id,
    pl.user,
    pl.host,
    pl.db,
    pl.command,
    pl.time AS wait_duration_seconds,
    pl.state,
    esc.sql_text AS executing_query,
    ew.wait_event_type,
    ew.wait_event_name
FROM
    information_schema.processlist pl
JOIN
    performance_schema.events_statements_current esc ON pl.id = esc.processlist_id
LEFT JOIN
    performance_schema.events_waits_current ew ON esc.thread_id = ew.thread_id
WHERE
    pl.state LIKE '%lock%'
    OR (ew.wait_event_type = 'LOCK' AND ew.wait_event_name NOT LIKE '%metadata%')
    OR pl.state LIKE '%latch%'
ORDER BY
    pl.time DESC;

关键说明:

  • information_schema.processlist:提供当前所有数据库连接的进程信息,通过state字段初步锁定锁相关等待状态(如Waiting for row lock、Waiting for table lock)。
  • performance_schema.events_statements_current:关联获取进程正在执行的SQL语句原文。
  • performance_schema.events_waits_current:精准识别锁/闩锁类型的等待事件,可通过wait_event_name排除非业务锁场景(比如元数据锁),按需调整过滤条件。
  • 按等待时长倒序排列,优先关注等待时间久的查询。

内容的提问来源于stack exchange,提问作者Kavin Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 18:10:34