Sobes.tech
Middle

Comment identifier les transactions bloquées dans PostgreSQL?

sobes.tech IA

Réponse de l'IA

Dans PostgreSQL, les transactions en attente sont celles qui restent longtemps en état actif ou idle in transaction, sans se terminer. Pour les identifier, vous pouvez utiliser une requête sur le catalogue système pg_stat_activity.

Exemple de requête pour rechercher ces transactions :

SELECT pid, usename, state, query, xact_start, now() - xact_start AS duration
FROM pg_stat_activity
WHERE state IN ('idle in transaction', 'active')
  AND xact_start IS NOT NULL
  AND now() - xact_start > interval '5 minutes'
ORDER BY duration DESC;

Ici, nous regardons les transactions qui sont en état "idle in transaction" ou "active" et qui durent plus de 5 minutes. Ces transactions peuvent bloquer d'autres opérations et entraîner des blocages.

Pour une analyse plus approfondie, vous pouvez vérifier les verrouillages via pg_locks et les relier aux transactions de pg_stat_activity.