web-dev-qa-db-fra.com

Justifier de ne pas utiliser (nolock) indique dans chaque requête

Avez-vous déjà dû justifier de ne pas utiliser d'indice de requête?

Je vois WITH (NOLOCK) Dans chaque requête qui frappe un serveur très occupé. C'est au point que les développeurs pensent que cela devrait simplement être sur défaut, car ils détestent la voir dans leur code des milliers de fois.

J'ai essayé d'expliquer qu'il permet de lire des lectures sales et ils finiront par des données mauvaises, mais elles croient que le compromis de performance en vaut la peine. (Leur base de données est un gâchis; pas étonnant qu'ils ont des problèmes de performance.)

Si vous avez un exemple clair de la façon de présenter le cas contre cet abus de l'indice NOLOCK, qui serait apprécié.

23
datagod

Vous choisissez vos batailles et vos batailles comme celle-ci ne peut pas être facilement gagnée. Nous avons un système où chaque DML est allongé avec l'indice Rowlock (indépendamment de la modification d'une rangée ou plusieurs milliers de lignes). J'ai montré plusieurs exemples pourquoi il fait vraiment mal à la performance, mais que le système fonctionne déjà, il y a une résistance au changement. Notez que je les convaincus suffisamment de ne pas utiliser cela à l'avenir.

Nolock a sa place mais je peux recommander de bonnes références présentant les problèmes de l'utiliser:

17
Sankar Reddy

Il a été discuté sur SO avant:

Définir très occupé. Nous avons des volumes élevés (50 000 nouvelles lignes par seconde, de grands agrégats, etc.) et ne voient pas la nécessité d'obtenir des données loutures aussi

11
gbn

Vous devez expliquer à vos collègues l'importance de comprendre les niveaux d'isolement. Montrez-leur des exemples. L'explication la plus gentille et la plus facile que j'ai trouvée sur la petite Kendra Affiche des niveaux d'isolation . Demandez-leur pourquoi ils pensent avoir besoin de nolock. Pourquoi n'utilisent-ils pas les déclarations "Set Transaction de l'isolation ..."? Demandez quelle est exactement la situation qu'ils veulent corriger, peut-être qu'ils ont des blocages, bloquant..etc. S'ils ne veulent tout simplement pas tenir des serrures, ils pourraient prendre en compte le niveau d'isolation de l'instantané.

Seulement en leur demandant que vous pouvez avoir une image claire.

9
Marian