Pregunta

En SQL Server, puede utilizar la sintaxis "(nolock)" para asegurar la consulta no se bloquea la tabla o no está bloqueado por otras consultas de bloqueo de la misma mesa. por ejemplo.

SELECT * FROM mytable (nolock) WHERE id = blah

¿Cuál es la sintaxis equivalente en Postgres? He encontrado algo de documentación sobre bloqueo de tablas en PG ( http: //www.postgresql .org / docs / 8.1 / / SQL interactivo-lock.html ), pero todo parece dirigido a la forma de bloqueo una mesa, no asegura que de no bloqueado .

¿Fue útil?

Solución

A Seleccione NO bloquea cualquier tabla en PostgreSQL, a menos que desee un bloqueo:

SELECT * FROM tablename FOR UPDATE;

PostgreSQL utiliza MVCC para minimizar la contención de bloqueo con el fin de permitir un rendimiento razonable en entornos multiusuario. Los lectores no entren en conflicto con los escritores ni otros lectores.

Otros consejos

He hecho algunas investigaciones y parece que la pista NOLOCK en SQL Server es aproximadamente el mismo que el nivel de aislamiento de transacción LEER UNCOMMITTED. En PostgreSQL, puede establecer READ UNCOMMITTED, pero en silencio actualiza el nivel de READ COMMITTED. READ UNCOMMITTED no es compatible.

PostgreSQL 8.4 documentación para aislamiento de transacciones: http: // www. postgresql.org/docs/8.4/static/transaction-iso.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top