Middle
PostgreSQL-də ilişib qalmış əməliyyatları necə müəyyən etmək olar?
sobes.tech Süni İntellekt
AI-dan cavab
PostgreSQL-də, ilişib qalmış tranzaksiyalar uzun müddət aktiv və ya idle in transaction vəziyyətində qalan və tamamlanmayan tranzaksiyalardır. Onları müəyyən etmək üçün sistem kataloqu pg_stat_activity-yə sorğu göndərmək olar.
Belə tranzaksiyaları tapmaq üçün nümunə sorğu:
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;
Burada, "idle in transaction" və ya "active" vəziyyətində olan və 5 dəqiqədən çox davam edən tranzaksiyaları nəzərdən keçiririk. Belə tranzaksiyalar digər əməliyyatları bloklaya və ilişmələrə səbəb ola bilər.
Dərin analiz üçün, pg_locks vasitəsilə kilidləri yoxlamaq və onları pg_stat_activity-dəki tranzaksiyalarla əlaqələndirmək mümkündür.