当前正在运行什么:活动会话、延迟、锁和事务(sys.session)
MySQL性能命令
SELECT conn_id, user, db, command, state, time,
LEFT(current_statement, 100) AS current_statement,
statement_latency, progress, lock_latency,
rows_examined, full_scan, tmp_disk_tables,
trx_state, trx_latency, last_wait
FROM sys.session
WHERE command <> 'Sleep' OR trx_state = 'ACTIVE'
ORDER BY time DESC
LIMIT 25;作用
用 performance_schema 数据扩充 SHOW PROCESSLIST:在一行中给出正在执行语句的延迟、进度百分比、锁等待时间、扫描行数、全表扫描/磁盘临时表信息以及打开的事务状态。还会列出处于 Sleep 但仍持有打开事务的会话。
适用场景
故障发生的前 30 秒内:哪个查询已运行多久、谁在等待锁、哪个空闲会话持有打开的事务。
注意
sys.session 在 performance_schema 上执行多次连接;连接数达到数千时查询本身可能耗时数秒,频繁监控时请使用 x$ 视图并加 LIMIT。progress 仅在启用 stage instrument 且操作会报告进度(如 ALTER)时才有值。处于 Sleep 且 trx_state=ACTIVE 的会话是使用 autocommit=0 的应用/连接池遗忘的事务,这是元数据锁和 purge 问题最常见的原因。