Question

Avez-vous déjà eu à justifier pas l'aide d'un indicateur de requête?

Je vois WITH (NOLOCK) dans chaque requête qui frappe un serveur très occupé. Il est au point que les développeurs pensent qu'il devrait juste être par défaut parce qu'ils détestent le voir dans leurs milliers de fois de code.

J'ai essayé d'expliquer qu'il permet à sale lit et ils finissent par de mauvaises données éventuellement, mais ils croient que le compromis entre performance vaut bien 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 bon exemple de la façon de présenter le cas contre cet abus de l'indice de NOLOCK, ce serait apprécié.

Était-ce utile?

La solution

Vous choisissez vos batailles et des combats comme celui-ci ne peuvent pas être facilement gagné. Nous avons un système où chaque DML est insinué avec le soupçon de ROWLOCK (quelle que soit la modification d'une ligne ou plusieurs milliers de lignes). J'ai montré plusieurs exemples pourquoi ça fait vraiment mal, mais les performances que le système fonctionne déjà, il y a une résistance au changement. Notez que je les ai assez convaincu de ne pas utiliser ce bien aller de l'avant.

NOLOCK l'a place, mais je peux recommander quelques bonnes références mettant en valeur les problèmes de l'utiliser:

Autres conseils

Il a été discuté sur le SO avant:

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

Vous devez expliquer à vos collègues l'importance de comprendre les niveaux d'isolement. Montrez-leur des exemples. La plus belle et plus facile explication que je trouve sur Little Kendra l'affiche des niveaux d'isolement . Demandez-leur pourquoi ils pensent avoir besoin nolock soupçon. Pourquoi ne pas utiliser le « jeu niveau d'isolation des transactions ... » déclarations? Demandez quelle est exactement la situation dans laquelle ils veulent fixer, ils ont peut-être interblocages blocking..etc. S'ils ne veulent pas maintenir les verrous, ils pourraient envisager de niveau d'isolement de capture instantanée.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top