1.1 Locking zur Lösung der Probleme
r />
Zwei Arten von Locks:
. X-Lock (Exclusive Lock)
. S-Lock (Share Lock)
Wertetabelle:
gefordertes Lock gesetztes Lock von Transaktion A
von Transaktion B X S kein
X wait B wait B OK
S wait B OK OK
1.2 Das lost update Problem
Problem:
Transaktion A Zeit Transaktion B
- -
lese Satz R t1 -
|
- t2 lese Satz R
|
ändere Satz R t3 -
|
- t4 ändere Satz R
- -
Lösung mittels Locking:
Transaktion A Zeit Transaktion B
- -
lese Satz R zum Ändern
(meldet X-Lock auf Satz R an) t1
| -
|
- t2
| lese Satz R zum Ändern
(möchte X-Lock auf Satz R)
|
ändere Satz R t3 wartet auf Freigabe von Satz R durch A
|
Synchpoint; Ende Transaktion
(gibt Satz R wieder frei) t4
| wartet auf Freigabe von Satz R durch A
|
- t5
| lese Satz R zum Ändern
(meldet X-Lock auf Satz R an)
- -
Zweiter Lösungsweg:
Transaktion A Zeit Transaktion B
- -
lese Satz R
(meldet S-Lock auf Satz R an) t1
| -
|
- t2
| lese Satz R
(meldet S-Lock auf Satz R an)
|
ändere Satz R
(möchte X-Lock auf Satz R) t3
| -
|
wartet auf Freigabe von Satz R durch B t4
| ändere Satz R
(möchte X-Lock auf Satz R)
|
wartet auf Freigabe von Satz R durch B t5 wartet auf Freigabe von Satz R durch A
|
wartet auf Freigabe von Satz R durch B wartet auf Freigabe von Satz R durch A Deadlock
1.3 Das uncommited dependency Problem
Problem:
Transaktion A Zeit Transaktion B
- -
- t1 ändere Satz R
|
lese Satz R t2 -
|
- t3 Rollback
- -
Lösung mittels Locking:
Transaktion A Zeit Transaktion B
- -
- t1
| ändere Satz R
(meldet X-Lock auf Satz an)
|
lese Satz R
(möchte S-Lock auf Satz R) t2
| -
|
wartet auf Freigabe von Satz R durch B t3
| Rollback; Synchpoint; Ende Transaktion
(gibt Satz R wieder frei)
|
lese Satz R
(meldet S-Lock auf Satz R an) t4
| -
- -
1.4 Das incosistent analysis Problem
Problem:
Transaktion A Zeit Transaktion B
- -
lies Konto1; Kontostand = 40 t1 -
|
- t2 ändere Konto2; Kontostand = 50 + 30 = 80
|
- t3 ändere Konto1; Kontostand = 40 - 30 = 10
|
lies Konto2; Kontostand = 80 t4 -
- -
Lösungsversuch mittels Locking:
Transaktion A Zeit Transaktion B
- -
lies Konto1
(meldet S-Lock auf Konto1 an) t1
| -
|
- t2
| ändere Konto2
(meldet X-Lock auf Konto2 an)
|
- t3
| ändere Konto1
(meldet X-Lock auf Konto1 an)
|
lies Konto2
(möchte S-Lock auf Konto2) t4
| wartet auf Freigabe von Konto1 durch A
|
wartet auf Freigabe von Konto2 durch B t5 wartet auf Freigabe von Konto1 durch A
- - Deadlock
1.5 Deadlock
1.6 Techniken zur Vermeidung/Lösung von Deadlocks
Erforderliche Eigenschaften von Transaktionen:
. Atomicity
. Konsistenzkriterium
. Dauerhaftigkeit
. Isolation
. Serialisierbarkeit
1.6.1 Two Phase Locking
1.6.2 Zeitmarkenverfahren
1.6.3 Transaktion Retry
Zwei Protokolle:
. Wait-Die Protokoll
. Wound-Wait Protokoll
Es ergibt sich folgende Wertetabelle:
B hat Satz gesperrt, A fordert Satz an
Wait-Die Wound-Wait
A B A B
A älter als B wartet - - zurückgenommen
B älter als A zurückgenommen - wartet -
-: arbeitet
2 Zwei-Phasen-Commit
Anwendung wenn mehrere verschiedene Datenbanksysteme synchronisiert werden müssen.
|