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.