Frage

Vor allem frage ich nicht, ob NOLOCK sollte oder nicht verwendet werden sollte. Lassen Sie uns über das bekommen.

Ich denke, die Frage kommt auf, wie SQL Server schreibt Daten? Ist eine ganze Reihe auf einmal geschrieben oder hat sie ihm eine Spalte zu einer Zeit schreiben?

Ich frage, weil der NOLOCK-Hinweis in Betracht gezogen wird. Ein verschmutzter lesen ist in Ordnung, solange die gesamte Zeile zurückgegeben (zurück oder nicht). Teilweise geschrieben Reihen sind nicht akzeptabel.

War es hilfreich?

Lösung

Nein. Datenänderungsoperationen wie Einfügungen, Aktualisierungen und Löschungen von niedrigem Niveau geschützt werden physikalisches Latches . Alle Datenzugriffsoperationen, einschließlich Lock-Free SELECT, sind verpflichtet, das Rast Protokoll anzupassen. Das Ergebnis ist, dass teilweise schreibt nie von einem Leser zu sehen sind.

Andere Tipps

Nein, es wird nicht nur teilweise geschrieben Zeilen zurück. NOLOCK bedeutet nur, dass diese Abfrage keine neue Schlösser schaffen. Es bedeutet nicht, es wird nicht bestehende Sperren ehren und SQL Server wird nichts tun, die Daten ohne den Erhalt einer Sperre zuerst schreibt.

Was könnte es tun, ist Rückkehr Zeilen, die veraltet sind oder nicht mehr relevant, weil etwas anderes zu einer Reihe geschrieben, die normalerweise wurden von dieser Abfrage gesperrt würden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top