PostGresql equivalente à dica de Nolock do SQLSERVER
-
25-09-2019 - |
Pergunta
No SQLServer, você pode usar a sintaxe "(nolock)" para garantir que a consulta não trave a tabela ou não está bloqueada por outras consultas travando a mesma tabela. por exemplo
SELECT * FROM mytable (nolock) WHERE id = blah
Qual é a sintaxe equivalente no Postgres? Encontrei alguma documentação sobre bloqueio de tabela em PG (http://www.postgresql.org/docs/8.1/interactive/sql-lock.html), mas tudo parece voltado para como trancar uma mesa, não garante que seja não bloqueado.
Solução
Uma seleção não bloqueia nenhuma tabela no PostgreSQL, a menos que você queira um bloqueio:
SELECT * FROM tablename FOR UPDATE;
PostgreSQL usa MVCC Minimizar a contenção de bloqueio para permitir um desempenho razoável em ambientes multiusuário. Os leitores não entram em conflito com escritores nem outros leitores.
Outras dicas
Eu fiz algumas pesquisas e parece que o NOLOCK
Dica no SQL Server é aproximadamente o mesmo que lida UNCOMMITTED
Nível de isolamento da transação. No PostgreSQL, você pode definir READ UNCOMMITTED
, mas silenciosamente atualiza o nível para READ COMMITTED
. READ UNCOMMITTED
não é suportado.
PostgreSQL 8.4 Documentação para isolamento de transações: http://www.postgresql.org/docs/8.4/static/transaction-iso.html