Sobes.tech
Middle

Hoe identificeer je vastgelopen transacties in PostgreSQL?

sobes.tech AI

Antwoord van AI

In PostgreSQL zijn hangende transacties die lange tijd in de staat 'active' of 'idle in transaction' blijven, zonder af te ronden. Om ze te identificeren, kan je een query gebruiken op de systeakcatalogus pg_stat_activity.

Voorbeeld van een query om dergelijke transacties te zoeken:

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 bekijken we transacties die in de staat "idle in transaction" of "active" zijn en langer dan 5 minuten duren. Dergelijke transacties kunnen andere operaties blokkeren en vastlopen veroorzaken.

Voor een diepere analyse kunnen blokkades worden gecontroleerd via pg_locks en deze worden gekoppeld aan transacties uit pg_stat_activity.