Middle
Ինչպես որոշել կախված գործարքները PostgreSQL-ում?
sobes.tech AI
Պատասխան AI-ից
PostgreSQL-ում կախված գործարքները այն են, որոնք երկար ժամանակ գտնվում են ակտիվ կամ idle in transaction վիճակում, առանց ավարտվելու: Դրանց հայտնաբերելու համար կարող եք օգտագործել համակարգային կատալոգ pg_stat_activity-ին հարցում:
Օրինակ՝ հարցում՝
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;
Այստեղ դիտում ենք այն գործարքները, որոնք գտնվում են «idle in transaction» կամ «active» վիճակում և տևում են ավելի քան 5 րոպե: Այդպիսի գործարքները կարող են բլոկավորել մյուս գործողությունները և առաջացնել կախվածություն:
Ամենամանրամասն վերլուծության համար կարող եք ստուգել բլոկավորումները pg_locks-ի միջոցով և կապել դրանք pg_stat_activity-ի գործարքների հետ։