PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Qu'est-ce qui peut provoquer une inactivité dans la transaction pour les instructions BEGIN

Les transactions ne bloquent pas du tout. La base de données attend que l'application envoie la prochaine instruction.

Le verrou sur l'ID de transaction n'est qu'une technique permettant aux transactions de se bloquer, même si elles ne sont pas en concurrence pour un verrou de table (par exemple, si elles attendent un verrou de ligne) :chaque transaction détient un verrou exclusif. ID de transaction, et s'il doit attendre la fin d'une transaction simultanée, il peut simplement demander un verrou sur l'ID de cette transaction (et être bloqué).

Si toutes les transactions ressemblent à ceci, alors le verrou doit se trouver quelque part dans votre application; la base de données n'est pas impliquée.

Lorsque vous recherchez des processus bloqués dans la base de données, recherchez des lignes dans pg_locksgranted est faux.