Sobes.tech
Middle

Kako odrediti zaglavljene transakcije u PostgreSQL?

sobes.tech АИ

Одговор од АИ

U PostgreSQL-u, zaglavljene transakcije su one koje dugo vremena ostaju u stanju aktivne ili idle in transaction, a da se ne završavaju. Da biste ih identifikovali, možete koristiti upit na sistemskom katalogu pg_stat_activity.

Primer upita za pronalaženje takvih transakcija:

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;

Ovde gledamo transakcije koje su u stanju "idle in transaction" ili "active" i traju duže od 5 minuta. Takve transakcije mogu blokirati druge operacije i izazvati zaglavljivanja.

Za dublju analizu, možete proveriti blokade putem pg_locks i povezati ih sa transakcijama iz pg_stat_activity.