Utilizo SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
en la mayoría de mis consultas generales de SQL, principalmente porque esto me fue profundizado cuando aprendí el idioma originalmente.
Según tengo entendido, este nivel de aislamiento actúa de la misma manera que, WITH (NO LOCK)
sin embargo, solo suelo usarlo SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
.
- ¿Hay algún momento en el que debería estar usando
WITH (NO LOCK)
másSET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
? - ¿
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Impide que otros usuarios se bloqueen de las tablas que estoy leyendo? - Si
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
se usa para detener las cerraduras, pero solo estoy leyendo datos, ¿cuál es el punto de usarlos? ¿Son solo las consultas intensivas del sistema las que generarían bloqueos? ¿Vale la pena usarlo cuando se ejecutan consultas que regresarían en unos 5-10 segundos? - Me han dicho que no use
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
cuando lea datos que se usarían en actualizaciones, presumiblemente para evitar actualizar datos sucios. ¿Sería esta la única razón? - Con el tipo de base de datos en la que estoy trabajando, hay un entorno de producción y prueba. Muy raramente consultaremos el entorno de producción, pero cuando sea necesario, generalmente lo usaré
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
en mi consulta. Entiendo que las lecturas sucias son posibles con esto. Además de recibir datos de vuelta que pueden no terminar comprometidos con la base de datos (y por lo tanto descartar mis resultados), ¿qué otros tipos de 'lecturas sucias' podrían ser posibles?
Perdón por las preguntas masivas.
READ UNCOMMITTED
todas partes, exactamente de la misma manera que no usaría en WITH (NOLOCK)
todas partes (son esencialmente lo mismo) blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere