Sobes.tech
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-ի գործարքների հետ։