Sočasno izvajanje transakcij - Mrtva zanka
Iz E-študij, proste zakladnice študentskega znanja
Pri sočasnem izvajanju transakcij se pojavljata naslednja problema:
- livelock
- Posamezno transakcijo lahko pri odobritvi zaseženja določenega podatka prehitevajo vse ostale transakcije in se s tem njeno čakanje raztegne na nedoločen čas (problem je rešljiv z algoritmi za dodeljevanje zaseženj)
- mrtva zanka (deadlock)
- Zgodi se, ko dve (ali več transakcij) zaseže vsaka svoj podatek, vsaka od njiju pa želi še podatek, ki ga je že zasegla tekmica. Zaradi tega transakciji čakata druga na drugo, in ker se po protokolu sprostijo zaseženi podatki le ob zaključku transakcije, ni čakanja nikoli konec.
Primer
Nastop mrtve zanke, ki lahko nastopi tudi pri PXC:
Rešitev
Problem mrtve zanke se razreši na dva načina:
- preprečimo, da se mrtva zanka sploh lahko pojavi, kar rešujemo z enim ali več od naslednjih prijemov: urnikom izvajanja transakcij, vnaprejšnja zahteva po zaseženjih zapisov, ureditev objektov zaseganja, odloča transakcijski program in prekinitev in ponovno izvajanje transakcij
- odpravimo mrtvo zanko potem, ko je ta že nastopila