Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 11079|Respuesta: 1

[Fuente] MSSQL CON LECTURA SUCIA (SIN BLOQUEO)

[Copiar enlace]
Publicado el 3-4-2020 a las 10:06:04 | | |
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





Anterior:La latencia maestro-esclavo de la base de datos conduce a una resolución inexacta de consultas
Próximo:Se resolvió el problema de que Fiddler no podía rastrear localhost local, solicitudes de red 127.0.0.1
Publicado el 5-4-2020 14:21:36 |
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com