Ce qui s'exécute en ce moment : sessions actives, latence, verrous et transactions (sys.session)
MySQLPerformancesCommande
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;Ce que fait la commande
Enrichit SHOW PROCESSLIST avec les données de performance_schema : latence de l'instruction en cours, pourcentage de progression, temps d'attente de verrou, lignes examinées, scan complet / table temporaire sur disque et état de la transaction ouverte sur une seule ligne. Liste aussi les sessions en Sleep qui gardent une transaction ouverte.
Quand l'utiliser
Dans les 30 premières secondes d'un incident : quelle requête s'exécute depuis combien de temps, qui attend des verrous, quelle session inactive garde une transaction ouverte.
Attention
sys.session effectue plusieurs jointures sur performance_schema ; avec des milliers de connexions, la requête elle-même peut prendre plusieurs secondes, utilisez donc les vues x$ et LIMIT pour une surveillance fréquente. progress n'est renseigné qu'avec les instruments de stage activés et pour les opérations qui rapportent leur progression, comme ALTER. Une session en Sleep avec trx_state=ACTIVE est une transaction oubliée par une application / un pool de connexions utilisant autocommit=0, la cause la plus fréquente des problèmes de metadata lock et de purge.
Voir aussi
- Trouver les requêtes les plus coûteuses (digest performance_schema)
- Diagnostiquer 'Waiting for table metadata lock' et trouver le vrai bloqueur
- Analyser les interblocages InnoDB et les journaliser tous
- Transactions longues et history list length (retard de purge)
- Capturer un slow log complet de courte durée et l'analyser avec pt-query-digest
- Déboguer un mauvais plan avec EXPLAIN ANALYZE et l'optimizer trace