Justifiez de NE PAS utiliser l'indicateur (nolock) dans chaque requête


23

Avez-vous déjà dû justifier de NE PAS utiliser un indice de requête?

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

J'ai essayé d'expliquer que cela permettait des lectures sales et qu'ils finiraient par avoir de mauvaises données, mais ils croient que le compromis de performance en vaut la peine. (Leur base de données est un gâchis; pas étonnant qu'ils aient des problèmes de performances.)

Si vous avez un exemple clair de la façon de présenter les arguments contre cet abus de l' NOLOCKindice, ce serait apprécié.

Réponses:


17

Vous choisissez vos batailles et des batailles comme celle-ci ne peuvent pas être facilement gagnées. Nous avons un système où chaque DML est associé à l'indice ROWLOCK (indépendamment de la modification d'une ligne ou de plusieurs milliers de lignes). J'ai montré plusieurs exemples pourquoi cela nuit vraiment aux performances, mais comme le système fonctionne déjà, il y a une résistance au changement. Notez que je les ai suffisamment convaincus de NE PAS utiliser cela à l'avenir.

NOLOCK a sa place mais je peux recommander quelques bonnes références mettant en évidence les problèmes d'utilisation:



9

Vous devez expliquer à vos collègues l'importance de comprendre les niveaux d'isolement. Montrez-leur des exemples. L'explication la plus agréable et la plus simple que j'ai trouvée sur l' affiche de Little Kendra des niveaux d'isolement . Demandez-leur pourquoi ils pensent avoir besoin d'un indice nolock. Pourquoi n'utilisent-ils pas les instructions "définir le niveau d'isolement des transactions ..."? Demandez quelle est exactement la situation qu'ils veulent résoudre, peut-être qu'ils ont des blocages, des blocages, etc. S'ils ne veulent tout simplement pas maintenir les verrous, ils peuvent envisager le niveau d'isolement de l'instantané.

Ce n'est qu'en leur demandant que vous pouvez avoir une image claire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.