Что выполняется прямо сейчас: активные сессии, задержки, блокировки и транзакции (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;Что делает
Дополняет SHOW PROCESSLIST данными performance_schema: задержка выполняемой команды, процент выполнения, время ожидания блокировки, прочитанные строки, полное сканирование / временная таблица на диске и состояние открытой транзакции — в одной строке. Также показывает сессии в Sleep, удерживающие открытую транзакцию.
Когда использовать
В первые 30 секунд инцидента: какой запрос сколько выполняется, кто ждёт блокировок, какая простаивающая сессия держит открытую транзакцию.
Внимание
sys.session выполняет несколько соединений по performance_schema; при тысячах подключений сам запрос может занимать секунды, поэтому для частого мониторинга используйте представления x$ и LIMIT. progress заполняется только при включённых stage-инструментах и для операций, сообщающих о ходе выполнения, например ALTER. Сессия в Sleep с trx_state=ACTIVE — транзакция, забытая приложением / пулом соединений с autocommit=0; это самая частая причина проблем с metadata lock и purge.
Связанные материалы
- Поиск самых дорогих запросов (performance_schema digest)
- Диагностика 'Waiting for table metadata lock' и поиск настоящего блокировщика
- Анализ взаимоблокировок InnoDB и запись всех их в журнал
- Долгие транзакции и history list length (отставание purge)
- Короткий полный slow log и его анализ с pt-query-digest
- Отладка плохого плана с EXPLAIN ANALYZE и optimizer trace