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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top