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 транзакцияларына байланыштыра аласыз.