Sobes.tech
Middle

Wie erkennt man hängende Transaktionen in PostgreSQL?

sobes.tech KI

Antwort von AI

In PostgreSQL sind hängende Transaktionen solche, die sich über längere Zeit im Zustand "active" oder "idle in transaction" befinden, ohne beendet zu werden. Um sie zu identifizieren, kann eine Abfrage im Systemkatalog pg_stat_activity verwendet werden.

Beispiel für eine Abfrage zur Suche solcher Transaktionen:

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;

Hier betrachten wir Transaktionen, die sich im Zustand "idle in transaction" oder "active" befinden und länger als 5 Minuten dauern. Solche Transaktionen können andere Operationen blockieren und zu Hängern führen.

Für eine tiefere Analyse kann man Sperren mit pg_locks überprüfen und diese mit Transaktionen aus pg_stat_activity verknüpfen.