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