uncommitted transaction transacciones read niveles example dirty committed bloqueo aislamiento sql sql-server transaction-isolation

sql - transaction - NOLOCK vs nivel de aislamiento de transacciones



set transaction isolation level read uncommitted example (4)

NOLOCK es una sugerencia de consulta y, como tal, solo se aplica a la tabla específica dentro de la consulta en la que se especifica.

La configuración del nivel de aislamiento de la transacción se aplica a todo el código ejecutado de aquí en adelante dentro de la conexión actual o hasta que se modifique explícitamente.

Para aclarar, funcionalmente el nivel de aislamiento en el trabajo es el mismo, sin embargo, el alcance que se cubre puede no serlo.

¿Cuál es la diferencia entre usar "CONFIGURAR EL NIVEL DE AISLAMIENTO DE TRANSACCIÓN LEER SIN COMPROMISO" y NOLOCK? ¿Es uno mejor que el otro?


Son la misma cosa, solo tienen un alcance diferente. NOLOCK se coloca por tabla y SET Transaction... se puede colocar como un bloque.


Tienen el mismo efecto, solo uno se usa como sugerencia de bloqueo (nolock) y el otro se usa para un alcance de conexión.

Tenga cuidado con cualquiera de esas: las lecturas sucias pueden ser algo muy malo dependiendo de su aplicación. Leer el mismo registro dos veces o perder un registro debido al movimiento de la página puede ser algo muy confuso para los usuarios ...


Vea esa respuesta desde hace unas horas, a la pregunta SQL Server SELECT sentencias que causan el bloqueo .

Citando a Remus Rusanu :

SELECT puede bloquear las actualizaciones. Un modelo de datos y una consulta diseñados correctamente solo causarán un bloqueo mínimo y no serán un problema. La sugerencia ''habitual'' CON NOLOCK es casi siempre la respuesta incorrecta. La respuesta correcta es ajustar la consulta para que no analice grandes tablas.

Si la consulta no se puede ajustar, primero debe considerar el nivel de AISLAMIENTO DE SNAPSHOT, en segundo lugar, debe considerar el uso de BASES DE DATOS DE BASE DE DATOS y la última opción debe ser DIRECT READS (y es mejor cambiar el nivel de aislamiento en lugar de usar el NOLOCK HINT). Tenga en cuenta que las lecturas sucias, como su nombre lo indica claramente, devolverán datos inconsistentes (por ejemplo, su hoja total puede estar desequilibrada).

Las otras respuestas también pueden ayudarte.