mysql如何查看当前正在执行的sql_mysql运行状态排查

P粉602998670
发布: 2025-12-17 13:54:02
原创
748人浏览过
使用 SHOW PROCESSLIST 或查询 information_schema.PROCESSLIST 可查看当前执行的 SQL 和状态;配合 performance_schema.data_lock_waits 等表可定位锁等待与阻塞源头。

mysql如何查看当前正在执行的sql_mysql运行状态排查

要查看 MySQL 当前正在执行的 SQL 语句和运行状态,核心是使用 SHOW PROCESSLIST 或查询 information_schema.PROCESSLIST 表,配合性能视图(如 performance_schema)可进一步定位慢查询、锁等待等问题。

查看实时连接与正在执行的SQL

执行以下命令即可列出当前所有连接及其正在运行的语句:

SHOW PROCESSLIST;
登录后复制

若需查看全部(包括 Sleep 状态及其他用户看不到的线程),需有 PROCESS 权限:

SHOW FULL PROCESSLIST;
登录后复制

常用字段说明:

  • Id:线程唯一标识
  • User:客户端连接用户名
  • Host:客户端 IP 和端口
  • db:当前默认数据库
  • Command:当前命令类型(如 Query、Sleep、Connect)
  • Time:该线程持续时间(秒),对排查长时间运行 SQL 很关键
  • State:线程状态(如 Sending data、Locked、Waiting for table metadata lock)
  • Info:正在执行或最近执行的 SQL(可能被截断,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 过滤锁相关状态,例如:

Linfo.ai
Linfo.ai

Linfo AI 是一款AI驱动的 Chrome 扩展程序,可以将网页文章、行业报告、YouTube 视频和 PDF 文档转换为结构化摘要。

Linfo.ai 145
查看详情 Linfo.ai
WHERE STATE IN ('Sending data', 'Sorting result', 'Copying to tmp table');
登录后复制

定位锁等待与阻塞源头

当出现响应变慢或事务卡住时,重点看是否被锁:

  • 检查 STATE 是否为 Waiting for ... lockLocked
  • 结合 performance_schema.data_locksdata_lock_waits(MySQL 8.0+)查锁冲突:
SELECT * FROM performance_schema.data_lock_waits;
登录后复制

该表能直接显示哪个线程在等哪个线程持有的锁,是排查死锁和长事务阻塞的关键依据。

辅助诊断:常用状态与含义速查

几个高频 State 值及应对建议:

  • Sending data:查询正在处理结果集(可能是大表扫描、未加索引的 JOIN,也可能是正常返回大数据量)
  • Creating sort index:ORDER BY 或 GROUP BY 触发了文件排序,考虑优化索引或减少排序字段
  • Copying to tmp table:查询使用了临时表(如 UNION、GROUP BY + 非索引字段),检查是否可改写或加索引
  • Waiting for table metadata lock:DDL(如 ALTER TABLE)被其他长事务阻塞,需先 kill 掉持有元数据锁的旧连接
  • Locked:MyISAM 表级锁或 InnoDB 行锁争用,InnoDB 下更常见的是行锁等待,需结合 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中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号