Sobes.tech
Middle

Kuidas tuvastada PostgreSQL-is kinni jäänud tehinguid?

sobes.tech AI

Vastus AI-lt

PostgreSQL-is, hangunud tehingud on need, mis pikka aega püsivad aktiivses või idle in transaction olekus, ilma et lõpetataks. Nende tuvastamiseks saab kasutada päringut süsteemi kataloogile pg_stat_activity.

Näide päringust selliste tehingute otsimiseks:

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;

Siin vaatleme tehinguid, mis on olekus "idle in transaction" või "active" ja kestavad üle 5 minuti. Sellised tehingud võivad blokeerida teisi operatsioone ja põhjustada hanguseid.

Sügavama analüüsi jaoks saab kontrollida lukke pg_locks kaudu ning neid seostada pg_stat_activity tehingutega.