Sobes.tech
Middle

Hogyan lehet felismerni a lefagyott tranzakciókat PostgreSQL-ben?

sobes.tech MI

Válasz az MI-től

A PostgreSQL-ben a lefagyott tranzakciók azok, amelyek hosszú ideig aktív vagy idle in transaction állapotban maradnak, és nem záródnak be. Ezek azonosításához használhatunk egy lekérdezést a rendszerkatalógus pg_stat_activity-ban.

Példa lekérdezés az ilyen tranzakciók keresésére:

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;

Itt azokat a tranzakciókat vizsgáljuk, amelyek "idle in transaction" vagy "active" állapotban vannak, és több mint 5 perce tartanak. Ezek a tranzakciók blokkolhatják a többi műveletet, és fagyásokat okozhatnak.

Mélységi elemzéshez ellenőrizheti a zárolásokat a pg_locks segítségével, és összekapcsolhatja azokat a pg_stat_activity-ban lévő tranzakciókkal.