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.