Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Was ist (sind) der Unterschied zwischen NOLOCK und UNCOMMITTED

NOLOCK : Entspricht READ UNCOMMITTED (Quelle:MSDN )

NOLOCK oder READ UNCOMMITTED Gibt an, dass Dirty Reads zulässig sind. Es werden keine gemeinsam genutzten Sperren ausgestellt, um zu verhindern, dass andere Transaktionen Daten ändern, die von der aktuellen Transaktion gelesen wurden, und exklusive Sperren, die von anderen Transaktionen gesetzt werden, blockieren nicht die aktuelle Transaktion am Lesen der gesperrten Daten. Das Zulassen von Dirty Reads kann zu einer höheren Parallelität führen, jedoch auf Kosten des Lesens von Datenänderungen, die dann von anderen Transaktionen rückgängig gemacht werden

READ UNCOMMITTED und NOLOCK Hinweise gelten nur für Datensperren. Alle Abfragen, einschließlich der with READ UNCOMMITTED and NOLOCK Hinweise, Sch-S-Sperren (Schema-Stabilität) während der Kompilierung und Ausführung erwerben. Aus diesem Grund werden Abfragen blockiert, wenn eine gleichzeitige Transaktion eine Sch-M-Sperre (Schemaänderung) für die Tabelle hält