Heim  >  Artikel  >  Datenbank  >  Verwendung von Sperren zur Parallelitätskontrolle im DBMS

Verwendung von Sperren zur Parallelitätskontrolle im DBMS

王林
王林nach vorne
2023-09-02 13:57:02879Durchsuche

在 DBMS 中使用锁进行并发控制

Sperren sind ein wesentlicher Bestandteil der Aufrechterhaltung der Parallelitätskontrolle in einem DBMS. Transaktionen in jedem System, das eine sperrenbasierte Parallelitätskontrolle implementiert, können keine Anweisungen lesen oder schreiben, bis sie die erforderlichen Sperren erhalten.

In sperrbasierten Protokollen gibt es zwei Arten von Sperren. Dies sind:

  • Binärsperren – Sie können nur einen von zwei Zuständen haben, gesperrt oder entsperrt.
  • Gemeinsame/exklusive Sperren – Gemeinsame Sperren nur erwerben, wenn Lesevorgänge ausgeführt werden. Gemeinsame Sperren können von mehreren Transaktionen gemeinsam genutzt werden, da keine Daten geändert werden. Verwenden Sie beim Ausführen von Schreibvorgängen eine exklusive Sperre. Nur Transaktionen mit einer exklusiven Sperre dürfen Datenwerte ändern.

Die verschiedenen Sperrprotokolle sind:

Einfaches Sperrprotokoll

Eine Transaktion erwirbt eine Sperre für einen Datenwert, bevor sie einen Schreibvorgang durchführt. Nachdem der Schreibvorgang abgeschlossen ist, kann die Sperre aufgehoben werden. Ein Beispiel für ein einfaches Sperrprotokoll ist:

SendenZwei Transaktionen T1 und T2 sind oben dargestellt. Für Lesevorgänge sind keine Sperren erforderlich, aber jede Transaktion erhält vor einem Schreibvorgang eine Sperre und gibt die Sperre anschließend wieder frei. Zwei-Phasen-Verriegelungsprotokoll
T1 T2
R(A)

R(A)
Sperren( B)

R(B)

W(B)

Unlock(B)

Sperren (C)

Übernehmen

Das Zwei-Phasen-Verriegelungsprotokoll besteht aus zwei Phasen, nämlich der Wachstumsphase und der Kontraktionsphase. Eine Transaktion kann Sperren nur während der Wachstumsphase erwerben. Beim Eintritt in die Schrumpfphase kann es zuvor erworbene Sperren freigeben, jedoch keine neuen Sperren erwerben. Exklusive Sperren werden durch X und gemeinsam genutzte Sperren durch S dargestellt. Ein Beispiel für ein zweiphasiges Verriegelungsprotokoll ist -

T1

T2

S(A)

R(A) tr>Entsperren (C)Entsperren (A)Entsperren (B)CommitDas Strikte Zweiphasen-Sperrprotokoll ähnelt dem Zweiphasen-Sperrprotokoll. Der einzige Unterschied besteht darin, dass in einem strengen 2PL-Protokoll alle vom Protokoll erworbenen exklusiven Sperren beibehalten werden müssen, bis das Protokoll festgeschrieben oder abgebrochen wird. Ein Beispiel für ein strenges zweistufiges Sperrprotokoll ist: T1T2. S (A)R (A)
S(A)

R(A)

W(B)

Entsperren (A)

Senden

Im obigen Beispiel teilen sich T1 und T2 die Sperre mithilfe der gemeinsam genutzten Variablen A, da auf A nur Lesevorgänge ausgeführt werden. T1 erwirbt die exklusive Sperre für B für den Schreibvorgang und gibt sie kurz darauf wieder frei. T2 macht dasselbe wie C.

Strenges Zweiphasen-Sperrprotokoll

S(A)

R(A)

tr>SendenFreischalten (C)
W (A)

Senden

Freischalten (B)

Im obigen Beispiel teilen sich T1 und T2 die Variable A mithilfe einer gemeinsamen Sperre, da auf A nur Lesevorgänge ausgeführt werden. T1 erhält eine exklusive Sperre auf B für Schreibvorgänge und T2 erwirbt eine exklusive Sperre auf C. Die exklusive Sperre wird erst freigegeben, nachdem die Transaktion festgeschrieben wurde. Bei gemeinsam genutzten Sperren gibt es jedoch keine derartigen Einschränkungen.

Strict Two Phase Locking Protocol

Das Strict Two Phase Locking Protocol ist nur eine Erweiterung des Two Phase Locking Protocol und des Strict Two Phase Locking Protocol. Sperrprotokoll. Hier werden alle von einer Transaktion gehaltenen Sperren, ob gemeinsam oder exklusiv, nur freigegeben, wenn die Transaktion festgeschrieben oder abgebrochen wird. Ein Beispiel für ein striktes zweistufiges Sperrprotokoll ist:

tr>W(B ) W(C) SendenFreischalten (A)Freischalten (B) Senden Unlock (A)Unlock(C)Im obigen Beispiel verwenden T1 und T2 eine gemeinsame Sperre, um die Variable A gemeinsam zu nutzen, da auf A nur Lesevorgänge ausgeführt werden. T1 erwirbt eine Exklusive Sperre für B für Schreibvorgänge und T2 für C. Machen Sie dasselbe für . Sowohl gemeinsame Sperren als auch exklusive Sperren werden erst freigegeben, nachdem die Transaktion festgeschrieben wurde.
T1 T2
S(A)

R(A)

S(A)

R(A)

Das obige ist der detaillierte Inhalt vonVerwendung von Sperren zur Parallelitätskontrolle im DBMS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen