1) Ja , eine Auswahl mit NOLOCK
wird schneller abgeschlossen als eine normale Auswahl.
2) Ja , eine Auswahl mit NOLOCK
wird andere Abfragen für die betroffene Tabelle schneller abschließen als eine normale Auswahl.
Warum sollte das so sein?
NOLOCK
normalerweise (abhängig von Ihrer DB-Engine) bedeutet, dass Sie mir Ihre Daten geben, und es ist mir egal, in welchem Zustand sie sich befinden, und ich mache mir nicht die Mühe, sie still zu halten, während Sie daraus lesen. Es ist auf einmal schneller, weniger ressourcenintensiv und sehr, sehr gefährlich.
Sie sollten gewarnt werden, niemals ein Update von oder etwas Systemkritisches durchzuführen, oder wo absolute Korrektheit erforderlich ist, indem Sie Daten verwenden, die von einem NOLOCK
stammen lesen. Es ist durchaus möglich, dass diese Daten Zeilen enthalten, die während der Ausführung der Abfrage gelöscht wurden oder die in anderen Sitzungen gelöscht wurden, die noch abgeschlossen werden müssen. Es ist möglich, dass diese Daten teilweise aktualisierte Zeilen enthalten. Es ist möglich, dass diese Daten Datensätze enthalten, die Fremdschlüsseleinschränkungen verletzen. Es ist möglich, dass diese Daten Zeilen ausschließen, die der Tabelle hinzugefügt wurden, aber noch festgeschrieben werden müssen.
Sie haben wirklich keine Möglichkeit zu wissen, wie der Status der Daten ist.
Wenn Sie versuchen, Dinge wie eine Zeilenanzahl oder andere zusammenfassende Daten zu erhalten, bei denen ein gewisser Fehlerspielraum akzeptabel ist, dann NOLOCK
ist eine gute Möglichkeit, die Leistung für diese Abfragen zu steigern und zu vermeiden, dass sie sich negativ auf die Datenbankleistung auswirken.
Verwenden Sie immer den NOLOCK
weisen Sie mit großer Vorsicht darauf hin und behandeln Sie alle zurückgegebenen Daten misstrauisch.