Begründen Sie NICHT die Verwendung von (Nolock) -Hinweisen in jeder Abfrage

23

Mussten Sie jemals rechtfertigen, KEINEN Abfragehinweis zu verwenden?

Ich sehe WITH (NOLOCK)in jeder einzelnen Abfrage, die einen sehr ausgelasteten Server trifft. Die Entwickler sind der Meinung, dass es standardmäßig aktiviert sein sollte, weil sie es hassen, es tausende Male in ihrem Code zu sehen.

Ich habe versucht zu erklären, dass es schmutzige Lesevorgänge zulässt und sie irgendwann schlechte Daten haben werden, aber sie glauben, dass der Performance-Kompromiss sich lohnt. (Ihre Datenbank ist ein Durcheinander; kein Wunder, dass sie Leistungsprobleme haben.)

Wenn Sie ein klares Beispiel dafür haben, wie Sie gegen diesen Missbrauch des NOLOCKHinweises vorgehen können, wäre dies sehr zu begrüßen.

datagod
quelle

Antworten:

17

Sie wählen Ihre Schlachten und Schlachten wie diese können nicht leicht gewonnen werden. Wir haben ein System, in dem jede DML mit dem ROWLOCK-Hinweis versehen ist (unabhängig davon, ob eine oder mehrere tausend Zeilen geändert werden). Ich habe einige Beispiele gezeigt, warum es die Leistung wirklich beeinträchtigt, aber da das System bereits funktioniert, gibt es Widerstand gegen Änderungen. Beachten Sie, dass ich sie genug überzeugt habe, um dies in Zukunft NICHT zu nutzen.

NOLOCK hat seinen Platz, aber ich kann einige gute Referenzen empfehlen, die die Probleme bei der Verwendung aufzeigen:

Sankar Reddy
quelle
9

Sie müssen Ihren Kollegen erklären, wie wichtig es ist, die Isolationsstufen zu verstehen. Zeigen Sie ihnen Beispiele. Die schönste und einfachste Erklärung, die ich auf Little Kendras Poster der Isolationsstufen gefunden habe . Fragen Sie sie, warum sie denken, sie brauchen einen Nolock-Hinweis. Warum verwenden sie nicht die Anweisungen "Transaktionsisolationsstufe festlegen ..."? Fragen Sie, was genau die Situation ist, die sie beheben möchten. Vielleicht haben sie Deadlocks, Blockierungen usw. Wenn sie nur keine Sperren halten möchten, können sie die Snapshot-Isolationsstufe in Betracht ziehen.

Nur wenn Sie sie fragen, können Sie sich ein klares Bild machen.

Marian
quelle