PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Cosa può causare l'inattività nella transazione per le istruzioni BEGIN

Le transazioni non si bloccano affatto. Il database è in attesa che l'applicazione invii la dichiarazione successiva.

Il blocco sull'ID transazione è solo una tecnica per bloccare le transazioni a vicenda, anche se non si contendono un blocco di tabella (ad esempio, se sono in attesa di un blocco di riga):ogni transazione possiede un blocco esclusivo da solo ID transazione e, se deve attendere il completamento di una transazione simultanea, può semplicemente richiedere il blocco dell'ID di quella transazione (ed essere bloccato).

Se tutte le transazioni hanno questo aspetto, il blocco deve trovarsi da qualche parte nell'applicazione; il database non è coinvolto.

Quando cerchi i processi bloccati nel database, cerca le righe in pg_locks dove granted è falso.