Contras:
1. Producirá lecturas subidas de tono
2. Solo aplicable a sentencias de consulta selectas
Ventajas:
1. Algunos archivos indican que la eficiencia de consultas SQL con WITH (NOLOCK) puede aumentarse en un 33%.
2. Puede usarse para sentencias de unión interna
Lectura sucia: Un usuario hace una modificación a un recurso, y otro usuario lee el registro modificado, y luego el primer usuario entrega la modificación, y los datos vuelven a la modificación anterior; estos dos resultados diferentes son lecturas sucias.
Detalles:
Para mejorar el rendimiento de las consultas SQL, en términos generales, la primera consideración es crear un índice. De hecho, además del establecimiento de índices, cuando colocamos comandos SQL, añadir una sección WITH (NOLOCK) a la sintaxis puede mejorar el fenómeno de que los conjuntos de datos estén bloqueados en un entorno con un gran número de consultas en línea, mejorando así el rendimiento de las consultas.
Sin embargo, hay que tener en cuenta que SQL SELECT con (NOLOCK) puede causar lectura sucia.
Por ejemplo:
Además de la sencilla SELECT, también puedes usar la sintaxis SELECT con JOIN. Pero los comandos ELIMINAR, INSERTAR, ACTUALIZAR y otros comandos que requieren transacciones no son buenos...
Algunos archivos indican que la eficiencia de consultas SQL puede aumentarse en un 33% con WITH (NOLOCK). Añadir WITH (NOLOCK) indica a SQL Server que nuestro comando SELECT no necesita considerar el estado del bloqueo de transacción de la tabla actual, por lo que el rendimiento mejorará significativamente y el fenómeno de bloqueo del sistema de base de datos se reducirá significativamente (incluyendo el bloqueo muerto).
Una cosa a tener en cuenta es que, dado que WITH (NOLOCK) no tiene en cuenta el bloqueo de transacciones de la tabla actual, cuando hay datos en múltiples fases (por ejemplo, transacciones en varias tablas - >por ejemplo, sistemas de retiro), WITH (NOLOCK) ignora los datos que están procesando actualmente el proceso de transacción...
Dicho sin rodeos, es decir, al usar NoLock, permite leer datos que han sido modificados pero la transacción aún no se ha completado. Por lo tanto, si necesitas considerar la integridad en tiempo real de los datos de transacciones, deberías pensar bien en usar WITH (NOLOCK).
Si no necesitas considerar las transacciones, WITH (NOLOCK) puede ser una referencia útil.
Nota 1: CON ( < table_hint > ) Especifica el escaneo de tablas, uno o más índices utilizados por el optimizador de consultas, O por el optimizador de consultas para aprovechar esta tabla de datos y usar el modo bloqueo para esta sentencia.
Nota 2: WITH (NOLOCK) es equivalente a READ UNCOMMITTED
|