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?

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


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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.