Middle
PostgreSQL'da yopilgan tranzaktsiyalarni qanday aniqlash mumkin?
sobes.tech AI
AIdan javob
PostgreSQL'da, uzoq qolgan tranzaksiyalar — bu uzoq vaqt davomida faol yoki idle in transaction holatida bo'lib, yakunlanmaydigan tranzaksiyalar. Ularni aniqlash uchun tizim katalogi pg_stat_activityga so'rov yuborish mumkin.
Bunday tranzaksiyalarni qidirish uchun misol so'rov:
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;
Bu yerda, "idle in transaction" yoki "active" holatida bo'lgan va 5 minutdan ortiq davom etayotgan tranzaksiyalarni ko'rib chiqamiz. Bunday tranzaksiyalar boshqa operatsiyalarni bloklashi va to'xtashlarga olib kelishi mumkin.
Yuqori darajadagi tahlil uchun, pg_locks orqali blokirovkalarni tekshirish va ularni pg_stat_activitydagi tranzaksiyalar bilan bog'lash mumkin.