DBAtlas · Atlas für Datenbankbetrieb

Was läuft gerade: aktive Sessions, Latenz, Sperren und Transaktionen (sys.session)

MySQLPerformance

Befehl

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;

Was es tut

Ergänzt SHOW PROCESSLIST um performance_schema-Daten: Latenz der laufenden Anweisung, Fortschritt in Prozent, Sperrwartezeit, untersuchte Zeilen, Full Scan / temporäre Tabelle auf Platte und Status der offenen Transaktion in einer Zeile. Listet auch Sessions im Zustand Sleep, die eine Transaktion offen halten.

Wann einsetzen

In den ersten 30 Sekunden eines Incidents: Welche Abfrage läuft seit wann, wer wartet auf Sperren, welche inaktive Session hält eine Transaktion offen.

Vorsicht

sys.session führt mehrere Joins über performance_schema aus; bei Tausenden Verbindungen kann die Abfrage selbst Sekunden dauern, nutze daher für häufiges Monitoring die x$-Views und LIMIT. progress wird nur mit aktivierten Stage-Instrumenten und für Operationen gefüllt, die Fortschritt melden, etwa ALTER. Eine Session in Sleep mit trx_state=ACTIVE ist eine vergessene Transaktion einer Anwendung / eines Connection-Pools mit autocommit=0, die häufigste Ursache für Metadata-Lock- und Purge-Probleme.

In DBAtlas öffnen →

Verwandte Einträge