uni:8:dbs2:zusammenfassung
This is an old revision of the document!
Table of Contents
Zusammenfassung
Die Mega-Übersicht
Synchronisation Pessimistische Synchronisation mit Sperren Sperrprotokolle 2PL [deadlocks] Konservatives 2PL Striktes 2PL [deadlocks] Konservatives + Striktes 2PL Sperrverfahren RX RUX RAX RIX RAC Deadlocks Vermeiden [konservatives 2PL/precaiming] Erkennen Wartegraph Time-Out wound-wait wait-die Pessimistische Synchronisation mit Zeitstempeln Optimistische Synchronisation mit Zeitstempeln BOCC BOCC+ FOCC
Grundbegriffe
Anforderungen (Codd)
- Integration einheitlicher Zugriff auf alle Daten einer Anwendung
- Operationen auf den Daten (ändern, löschen, …)
- Data Dictionary Schema anschauen
- Benutzersicheten views
- Konsistenzüberwachung bei Änderung
- Zugriffskontrolle
- Transaktionen
- Synchronisation (Mehrbenutzersystem)
Ebenen
| Anwendungen (mehrere) | |
| Externe Ebene | Views (mehrere) |
|---|---|
| ↓↓ Logische Datenunabhängigkeit ↓↓ | |
| Konzeptionelle Ebene | |
| ↓↓ Physische Datenunabhängigkeit ↓↓ | |
| Interne Ebene | Speicherformat |
ACID
- Atomic (Wenn, dann wird man als ganzes abgebrochen)
- Consistency (Konsistenter Zystand → Konsistenter Zustand)
- Isolation (Man muss sich aleine fühlen)
- Durability (Abgeschlossene Transaktionen sind von dauer)
Synchronisation
Serialisierungs-Graph
| x | y | z | ← Attribute |
|---|---|---|---|
| $r_1$ | $w_2$ | $r_1$ | ← $\text{Operation}_\text{Transaktion}$ |
| $r_2$ | $r_3$ | $w_1$ | |
| $w_2$ | $w_3$ | $r_4$ | |
| $w_3$ |
Spaltenweise von oben nach unten die $wr(x), rw(x), ww(x)$-Paare finden
Anomalien
Lost update
| t1 | r(x) | w(x) | |
|---|---|---|---|
| t2 | w(x) |
Dirty read/write
| t1 | w(x) | w(x) | |
|---|---|---|---|
| t2 | r(x) |
Non-repeatable read
| t1 | r(x) | r(x) | |
|---|---|---|---|
| t2 | w(x) |
Phantom-Problem
Non-repeatable read mit Aggregiertem read
Eigenschaften von Schedules
Eigenschaften eines Schedules:
| Schedule | Beschreibung |
|---|---|
| allgemein | Durcheinander |
| seriell | Blockform |
| serialisierbar | allgemein + seriell (Zyklenfrei) |
| rücksetzbar | commit erst nach commit von denen ich gelesen habe |
| ohne kaskadiertes Rollback | Keine Daten einer laufenden TA lesen |
| strikt | Keine Daten einer laufenden TA lesen/schreiben |
Eigenschaften zwischen Schedules:
| Schedule | Beschreibung |
|---|---|
| konfliktäquivalent | Gleiche Abhängigkeitsmengen |
Sperrprotokoll
- 2PL:
/ \ - striktes 2PL:
/ |
Konsistenzstufen
- kurz
- lang: Bis EOT
| Konsistenzstufe | Schreibsperre | Lesesperre |
|---|---|---|
| 0 | kurz | - |
| 1 | lang | - |
| 2 | lang | kurz |
| 3 | lang | lang |
Sperrverfahren
Verfahren
(Voll)
| X | |
|---|---|
| X | |
RX
| R | X | |
|---|---|---|
| R | | |
| X | | |
RUX
- U: update/lesen
| R | U | X | |
|---|---|---|---|
| R | | | |
| U | | | |
| X | | | |
Übergänge:
- U → X: Möchte jetzt schreiben
RAX
- A: = U (update/lesen)
| R | A | X | |
|---|---|---|---|
| R | | | |
| A | | | |
| X | | | |
Übergänge:
- A → X: Möchte jetzt schreiben
RIX
Auf oberer Ebene (Tabelle):
| R | X | IR | IX | RIX | |
|---|---|---|---|---|---|
| R | | | | | |
| X | | | | | |
| IR | | | | | |
| IX | | | | | |
| RIX | | | | | |
| Überprüfung auf unterer Ebene nötig |
|---|
- Obere Ebene hat …
- R
- X
- Untere Ebene hat …
- R ⇒ IR
- X ⇒ IX
- Obere Ebene hat R, untere Ebene hat X …
- RIX (mix aus R und IX)
Auf unterer Ebene (Tupel): RX/RUX/RAX
RAC
- A Änderung $V_\text{neu}$ im cache
- C $V_\text{alt}$ wird noch von alten Lesern gelesen
| R | A | C | |
|---|---|---|---|
| R | | | |
| A | | | |
| C | | | |
Übergänge:
- A → C: Bei commit
Eigenschaften
| Verfahren | Kein Verhungern | Deadlockfrei selbes Obj. | Deadlockfrei anderes Obj. | Schedule | Bemerkung |
|---|---|---|---|---|---|
| RX | | | | kaskadierte freies rücksetzen | Parallele Leser |
| RUX | | | | Parallele Leser | |
| RAX | | | | Zwar nach kein verklemmen, dafür verhungern für mehr Parallelität |
uni/8/dbs2/zusammenfassung.1437165437.txt.gz · Last modified: (external edit)
