SQL Server - RangeX-X- und RangeI-N-Sperren

7

Ich bin in einer Deadlock-Analyse zu einem toten Punkt gekommen. Laut msdn :

RangeX-X sind exklusive Range- und exklusive Ressourcensperre. Wird beim Aktualisieren eines Schlüssels in einem Bereich verwendet. RangeI-N sind Insert Range, Null Resource Lock; Wird zum Testen von Bereichen verwendet, bevor ein neuer Schlüssel in einen Index eingefügt wird.

Ich verstehe also, dass ich, wenn ich einen Index für 2 Schlüsselspalten habe - und einen neuen Schlüssel einfüge, die RangeI-N-Sperre hätte, aber wenn ich einen vorhandenen Schlüssel aus dem Index aktualisiere, RangeX-X hätte.

Aber meine Frage ist mehr oder weniger kompliziert. Angenommen, ich habe den Index IX_keys_included in Spalte A, B und eingeschlossene Spalte C.

Im serialisierbaren Isolationsmodus füge ich einen neuen Wert für die enthaltene Spalte C ein. Gibt es RangeI-N- oder RangeX-X-Sperren für den Index IX_keys_included? Wird es tatsächlich Sperren geben, da ich eine neue Spalte für eine eingeschlossene Spalte in den Index einfüge?

yrushka
quelle

Antworten:

4

Ich habe das selbst herausgefunden und in meinem Blog geschrieben. Für diejenigen, die an der Lösung interessiert sind, besuchen Sie diese Beiträge: RangeS-S , RangeS-U , RangeX-X

yrushka
quelle
Hallo, Ihre Website klickt auf "FEHLER: Diese Antwort von reCAPTCHA war falsch." als ich versuchte zu kommentieren
zeroflaw
Zunächst einmal vielen Dank für Ihre Erklärung. Ich habe jedoch einige Fragen: 1. Sie haben erwähnt, dass RangeX-X-Sperren nur für diese "Spalten" erfasst werden. Bedeutet dies, dass jedes andere Einfügen / Aktualisieren / Löschen, das diese Spalte betrifft, blockiert wird? (Was ist fast ähnlich wie bei der Tabellensperre?) 2. Wie kann man diesen Status von 'WAIT' in Deadlock ändern? Ist das eine Auszeit?
Zeroflaw