Frage

Mussten Sie jemals rechtfertigen, keinen Abfrage -Hinweis zu verwenden?

ich sehe WITH (NOLOCK) In jeder einzelnen Abfrage, die einen sehr geschäftigen Server trifft. Bis zu dem Punkt, dass die Entwickler der Meinung sind, dass es standardmäßig nur eingeschaltet sein sollte, weil sie es tausende Male in ihrem Code hassen, es in ihrem Code zu sehen.

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

Wenn Sie ein klares Beispiel dafür haben, wie Sie den Fall gegen diesen Missbrauch des vorstellen können NOLOCK Hinweis, das wäre geschätzt.

War es hilfreich?

Lösung

Sie auswählen Ihre Schlachten und Schlachten wie diese können nicht leicht gewonnen werden. Wir haben ein System, bei dem jede DML mit dem Rowlock -Hinweis angedeutet wird (unabhängig von der Änderung einer Zeile oder mehreren tausend Zeilen). Ich habe mehrere Beispiele gezeigt, warum es die Leistung wirklich schadet, aber da das System bereits funktioniert, gibt es Widerstand gegen Veränderungen. Beachten Sie, dass ich sie genug überzeugt habe, dies nicht für die Zukunft zu verwenden.

Nolock hat es Platz, aber ich kann einige gute Referenzen empfehlen, die die Probleme der Verwendung der Verwendung zeigen:

Andere Tipps

Es wurde schon einmal darüber diskutiert:

Definieren Sie sehr beschäftigt. Wir haben hohe Volumina (50.000 neue Zeilen pro Sekunde, große Aggregate usw.) und sehen auch nicht die Notwendigkeit, zwielichtige Daten zu erhalten

Sie müssen Ihren Kollegen erklären, wie wichtig es ist, die Isolationsniveaus zu verstehen. Zeigen Sie ihnen Beispiele. Die schönste und einfachste Erklärung, die ich bei Little Kendra gefunden habe Poster der Isolationsniveaus. Fragen Sie sie, warum sie denken, dass sie Nolock Hinweis brauchen. Warum verwenden sie nicht die Aussagen "Set Transaction Isolation ..."? Fragen Sie genau die Situation, die sie beheben möchten, vielleicht haben sie Deadlocks und blockieren. Wenn sie einfach keine Schlösser halten wollen, können sie in Betracht ziehen, dass sie eine Snapshot -Isolationsniveau haben.

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top