Es ist nicht immer schlecht.
Natürlich können Sie damit nicht festgeschriebene Werte lesen (die möglicherweise zurückgesetzt werden und daher niemals logisch existieren) sowie Phänomene wie das mehrmalige oder gar keine Werte lesen.
Die einzigen Isolationsstufen, die garantieren, dass solche Anomalien nicht auftreten, sind serialisierbar / Schnappschuss. Unter Repeatable Read können Werte verfehlt werden, wenn eine Zeile verschoben wird (aufgrund einer Schlüsselaktualisierung), bevor der Scan diese Zeile erreicht. Unter Read Committed können Werte zweimal gelesen werden, wenn eine Schlüsselaktualisierung bewirkt, dass eine zuvor gelesene Zeile vorwärts verschoben wird.
Es ist jedoch wahrscheinlicher, dass diese Probleme auftreten, nolock
da bei dieser Isolationsstufe standardmäßig ein nach Zuordnung geordneter Scan verwendet wird, wenn geschätzt wird, dass mehr als 64 Seiten gelesen werden müssen . Neben der Kategorie von Problemen, die auftreten, wenn Zeilen aufgrund von Indexschlüsselaktualisierungen zwischen Seiten verschoben werden, sind diese Überprüfungen nach Zuordnungsreihenfolge auch anfällig für Probleme mit Seitenteilen (bei denen Zeilen übersehen werden können, wenn die neu zugewiesene Seite in der Datei früher als der Punkt ist bereits gescannt oder zweimal gelesen, wenn eine bereits gescannte Seite auf eine spätere Seite in der Datei aufgeteilt wird).
Zumindest für einfache (einzelne Tabellen-) Abfragen ist es möglich, die Verwendung dieser Scans zu unterbinden und einen nach Schlüsseln geordneten Scan zu erhalten, nolock
indem einfach ein ORDER BY index_key
zu der Abfrage hinzugefügt wird , so dass die Ordered
Eigenschaft von IndexScan
lautet true
.
Wenn Ihre Berichtsanwendung jedoch keine absolut genauen Zahlen benötigt und die größere Wahrscheinlichkeit solcher Inkonsistenzen toleriert, ist dies möglicherweise akzeptabel.
Aber Sie sollten es sicherlich nicht bei allen Abfragen ablegen, in der Hoffnung, dass es sich um einen magischen "Turbo" -Knopf handelt. Neben der höheren Wahrscheinlichkeit, dass auf dieser Isolationsstufe anormale Ergebnisse oder gar keine Ergebnisse auftreten (Fehler "Scannen mit NOLOCK konnte aufgrund von Datenverschiebung nicht fortgesetzt werden"), gibt es sogar Fälle, in denen die Leistung mit nolock
erheblich schlechter sein kann .