Justifique NO usar la sugerencia (nolock) en cada consulta


23

¿Alguna vez ha tenido que justificar NO usar una sugerencia de consulta?

Estoy viendo WITH (NOLOCK)en cada consulta que llega a un servidor muy ocupado. Es hasta el punto que los desarrolladores piensan que debería estar activado de manera predeterminada porque odian verlo en su código miles de veces.

Traté de explicar que está permitiendo lecturas sucias y eventualmente terminarán con datos incorrectos, pero creen que la compensación del rendimiento bien vale la pena. (Su base de datos es un desastre; no es de extrañar que tengan problemas de rendimiento).

Si tiene un ejemplo claro de cómo presentar el caso contra este abuso de la NOLOCKpista, eso sería apreciado.

Respuestas:


17

Eliges tus batallas y batallas como esta no se pueden ganar fácilmente. Tenemos un sistema donde cada DML se insinúa con la sugerencia ROWLOCK (independientemente de modificar una fila o varios miles de filas). Mostré varios ejemplos de por qué realmente perjudica el rendimiento, pero como el sistema ya está funcionando, hay resistencia al cambio. Sin embargo, tenga en cuenta que los convencí lo suficiente como para NO usar esto en el futuro.

NOLOCK tiene su lugar, pero puedo recomendar algunas buenas referencias que muestran los problemas de su uso:



9

Debe explicar a sus colegas la importancia de comprender los niveles de aislamiento. Muéstrales ejemplos. La explicación más agradable y sencilla que encontré en el póster de niveles de aislamiento de Little Kendra . Pregúnteles por qué creen que necesitan una pista nolock. ¿Por qué no usan las declaraciones "establecer nivel de aislamiento de transacción ..."? Pregúnteles cuál es exactamente la situación que quieren arreglar, tal vez tengan puntos muertos, bloqueando ... etc. Si simplemente no quieren mantener bloqueos, podrían considerar el nivel de aislamiento de la instantánea.

Solo preguntándoles puede tener una imagen clara.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.