使用 SHOW PROCESSLIST 或查询 information_schema.PROCESSLIST 可查看当前执行的 SQL 和状态;配合 performance_schema.data_lock_waits 等表可定位锁等待与阻塞源头。

要查看 MySQL 当前正在执行的 SQL 语句和运行状态,核心是使用 SHOW PROCESSLIST 或查询 information_schema.PROCESSLIST 表,配合性能视图(如 performance_schema)可进一步定位慢查询、锁等待等问题。
执行以下命令即可列出当前所有连接及其正在运行的语句:
SHOW PROCESSLIST;
若需查看全部(包括 Sleep 状态及其他用户看不到的线程),需有 PROCESS 权限:
SHOW FULL PROCESSLIST;
常用字段说明:
FULL 可显示完整)推荐使用 information_schema.PROCESSLIST,便于加条件过滤:
SELECT ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM information_schema.PROCESSLIST WHERE COMMAND = 'Query' AND TIME > 30;
这个例子找出运行超 30 秒的活跃查询。还可结合 STATE 过滤锁相关状态,例如:
WHERE STATE IN ('Sending data', 'Sorting result', 'Copying to tmp table');当出现响应变慢或事务卡住时,重点看是否被锁:
STATE 是否为 Waiting for ... lock 或 Locked
performance_schema.data_locks 和 data_lock_waits(MySQL 8.0+)查锁冲突:SELECT * FROM performance_schema.data_lock_waits;
该表能直接显示哪个线程在等哪个线程持有的锁,是排查死锁和长事务阻塞的关键依据。
几个高频 State 值及应对建议:
innodb_trx 查事务必要时可连查事务表:
SELECT * FROM information_schema.INNODB_TRX ORDER BY TRX_STARTED;
重点关注 TRX_STATE(是否 RUNNING/LOCK WAIT)、TRX_STARTED(运行时长)、TRX_QUERY(当前 SQL)。
以上就是mysql如何查看当前正在执行的sql_mysql运行状态排查的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号