DBAtlas · Атлас эксплуатации баз данных

Что выполняется прямо сейчас: активные сессии, задержки, блокировки и транзакции (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.

Открыть в DBAtlas →

Связанные материалы