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:
Die verschiedenen Sperrprotokolle sind:
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:
T1 | T2 |
---|---|
R(A) | |
R(A) | |
Sperren( B) | |
R(B) | |
W(B) |
|
Unlock(B) | |
Sperren (C) | |
Übernehmen |
|
Zwei-Phasen-Verriegelungsprotokoll | 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) | tr>|
R(A) | |
W(B)
|
|
| Entsperren (C)|
Entsperren (A) | |
Entsperren (B) | |
Entsperren (A)
|
|
Senden | |
Commit | |
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 |
T1 | T2 |
S(A) | |
R(A) | |
. | |
W (A) | tr> | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 ProtocolDas 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:
|
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!