PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

O que pode causar ociosidade na transação para instruções BEGIN


As transações não estão bloqueando. O banco de dados está aguardando o aplicativo enviar a próxima instrução.

O bloqueio no ID da transação é apenas uma técnica para as transações bloquearem umas às outras, mesmo que não estejam disputando um bloqueio de tabela (por exemplo, se estiverem aguardando um bloqueio de linha):cada transação possui um bloqueio exclusivo por conta própria ID da transação e, se tiver que aguardar a conclusão de uma transação simultânea, pode apenas solicitar um bloqueio no ID dessa transação (e ser bloqueado).

Se todas as transações forem assim, o bloqueio deve estar em algum lugar em seu aplicativo; o banco de dados não está envolvido.

Ao procurar processos bloqueados no banco de dados, procure linhas em pg_locks onde granted é falso.