DBMS Concurrency Control: Timestamp & Lock-Based Protocols
Co je kontrola soubฤลพnosti?
Kontrola soubฤลพnosti v Database Management System je postup ลรญzenรญ simultรกnnรญch operacรญ bez vzรกjemnรฉho konfliktu. Zajiลกลฅuje, ลพe databรกzovรฉ transakce jsou provรกdฤny soubฤลพnฤ a pลesnฤ, aby produkovaly sprรกvnรฉ vรฝsledky, aniลพ by byla naruลกena integrita dat pลรญsluลกnรฉ databรกze.
Soubฤลพnรฝ pลรญstup je docela snadnรฝ, pokud vลกichni uลพivatelรฉ pouze ฤtou data. V ลพรกdnรฉm pลรญpadฤ se nemohou navzรกjem ruลกit. Aฤkoli pro kaลพdou praktickou databรกzi by mฤla mรญt kombinaci operacรญ ฤTENร a ZรPIS, a proto je soubฤลพnost vรฝzvou.
DBMS Concurrency Control se pouลพรญvรก k ลeลกenรญ takovรฝch konfliktลฏ, kterรฉ se vฤtลกinou vyskytujรญ u vรญceuลพivatelskรฉho systรฉmu. Proto je Concurrency Control nejdลฏleลพitฤjลกรญm prvkem pro sprรกvnรฉ fungovรกnรญ systรฉmu sprรกvy databรกzรญ, kde jsou souฤasnฤ provรกdฤny dvฤ nebo vรญce databรกzovรฝch transakcรญ, kterรฉ vyลพadujรญ pลรญstup ke stejnรฝm datลฏm.
Potenciรกlnรญ problรฉmy soubฤลพnosti
Zde jsou nฤkterรฉ problรฉmy, se kterรฝmi se pravdฤpodobnฤ setkรกte pลi pouลพรญvรกnรญ metody DBMS Concurrency Control:
- Ztracenรฉ aktualizace dojde, kdyลพ vรญce transakcรญ vybere stejnรฝ ลรกdek a aktualizuje ลรกdek na zรกkladฤ vybranรฉ hodnoty
- Problรฉmy se zรกvislostรญ nastanou, kdyลพ druhรก transakce vybere ลรกdek, kterรฝ je aktualizovรกn jinou transakcรญ (ลกpinavรฉ ฤtenรญ)
- Neopakovatelnรฉ ฤtenรญ dochรกzรญ, kdyลพ se druhรก transakce pokouลกรญ o pลรญstup ke stejnรฉmu ลรกdku nฤkolikrรกt a pokaลพdรฉ ฤte jinรก data.
- Chybnรฉ shrnutรญ nastane, kdyลพ jedna transakce pลevezme souhrn hodnoty vลกech instancรญ opakovanรฉ datovรฉ poloลพky a druhรก transakce aktualizuje nฤkolik instancรญ tรฉto konkrรฉtnรญ datovรฉ poloลพky. V takovรฉm pลรญpadฤ vรฝslednรฝ souhrn neodrรกลพรญ sprรกvnรฝ vรฝsledek.
Proฤ pouลพรญvat metodu soubฤลพnosti?
Dลฏvody pro pouลพitรญ metody Concurrency control jsou DBMS:
- Aplikovat izolaci prostลednictvรญm vzรกjemnรฉho vylouฤenรญ mezi konfliktnรญmi transakcemi
- ลeลกenรญ problรฉmลฏ s konflikty ฤtenรญ, zรกpisu a zรกpisu
- Chcete-li zachovat konzistenci databรกze prostลednictvรญm neustรกlรฉho zachovรกnรญ pลekรกลพek provรกdฤnรญ
- Systรฉm potลebuje ลรญdit interakci mezi soubฤลพnรฝmi transakcemi. Tohoto ลรญzenรญ je dosaลพeno pomocรญ schรฉmat soubฤลพnรฉho ลรญzenรญ.
- ลรญzenรญ soubฤลพnosti pomรกhรก zajistit serializovatelnost
Pลรญklad
Pลedpoklรกdejme, ลพe dva lidรฉ, kteลรญ jdou do elektronickรฝch kioskลฏ ve stejnou dobu, aby si koupili lรญstek do kina na stejnรฝ film a ve stejnรฝ ฤas pลedstavenรญ.
Na promรญtรกnรญ filmu v tomto konkrรฉtnรญm divadle vลกak zbรฝvรก pouze jedno mรญsto. Bez kontroly soubฤลพnosti v DBMS je moลพnรฉ, ลพe si vstupenku nakonec koupรญ oba divรกci. Metoda kontroly soubฤลพnosti to vลกak neumoลพลuje. Oba divรกci majรญ stรกle pลรญstup k informacรญm zapsanรฝm v databรกzi filmovรฝch sedadel. ลรญzenรญ soubฤลพnosti vลกak poskytuje vstupenku pouze kupujรญcรญmu, kterรฝ dokonฤil proces transakce jako prvnรญ.
Protokoly kontroly soubฤลพnosti
Rลฏznรฉ protokoly ลรญzenรญ soubฤลพnosti nabรญzejรญ rลฏznรฉ vรฝhody mezi mnoลพstvรญm soubฤลพnosti, kterou umoลพลujรญ, a vรฝลกรญ reลพie, kterou uklรกdajรญ. Nรญลพe jsou uvedeny techniky Concurrency Control v DBMS:
- Protokoly zaloลพenรฉ na zรกmku
- Protokol dvoufรกzovรฉho uzamฤenรญ
- Protokoly zaloลพenรฉ na ฤasovรฉm razรญtku
- Protokoly zaloลพenรฉ na validaci
Protokoly zaloลพenรฉ na zรกmku
Protokoly zaloลพenรฉ na zรกmku v DBMS je mechanismus, ve kterรฉm transakce nemลฏลพe ฤรญst nebo zapisovat data, dokud nezรญskรก vhodnรฝ zรกmek. Protokoly zaloลพenรฉ na uzamฤenรญ pomรกhajรญ eliminovat problรฉm soubฤลพnosti v DBMS pro simultรกnnรญ transakce tรญm, ลพe zamykajรญ nebo izolujรญ konkrรฉtnรญ transakci pro jednoho uลพivatele.
Zรกmek je datovรก promฤnnรก, kterรก je spojena s datovou poloลพkou. Tento zรกmek oznaฤuje operace, kterรฉ lze provรกdฤt s datovou poloลพkou. Zรกmky v DBMS pomรกhajรญ synchronizovat pลรญstup k poloลพkรกm databรกze soubฤลพnรฝmi transakcemi.
Vลกechny poลพadavky na zรกmek jsou odesรญlรกny sprรกvci ลรญzenรญ soubฤลพnosti. Transakce probรญhajรญ pouze po schvรกlenรญ poลพadavku na zรกmek.
Binรกrnรญ zรกmky: Binรกrnรญ zรกmek na datovรฉ poloลพce mลฏลพe bรฝt zamฤenรฝ nebo odemฤenรฝ.
Sdรญlenรฉ/exkluzivnรญ: Tento typ uzamykacรญho mechanismu oddฤluje zรกmky v DBMS na zรกkladฤ jejich pouลพitรญ. Pokud je na datovรฉ poloลพce zรญskรกn zรกmek pro provedenรญ operace zรกpisu, nazรฝvรก se vรฝhradnรญ zรกmek.
1. Sdรญlenรฝ zรกmek (S):
Sdรญlenรฝ zรกmek se takรฉ nazรฝvรก zรกmek pouze pro ฤtenรญ. Pomocรญ sdรญlenรฉho zรกmku lze datovou poloลพku sdรญlet mezi transakcemi. Nikdy totiลพ nebudete mรญt oprรกvnฤnรญ aktualizovat data na datovรฉ poloลพce.
Vezmฤme si napลรญklad pลรญpad, kdy dvฤ transakce ฤtou zลฏstatek na รบฤtu osoby. The databรกze umoลพnรญ jim ฤรญst umรญstฤnรญm sdรญlenรฉho zรกmku. Pokud vลกak chce jinรก transakce aktualizovat zลฏstatek na รบฤtu, sdรญlenรฝ zรกmek tomu zabrรกnรญ, dokud proces ฤtenรญ neskonฤรญ.
2. Exkluzivnรญ zรกmek (X):
S Exclusive Lock lze datovou poloลพku ฤรญst i zapisovat. Toto je exkluzivnรญ a nemลฏลพe bรฝt drลพeno souฤasnฤ u stejnรฉ datovรฉ poloลพky. X-lock je vyลพadovรกn pomocรญ instrukce lock-x. Transakce mohou odemknout datovou poloลพku po dokonฤenรญ operace โzรกpisโ.
Napลรญklad, kdyลพ transakce potลebuje aktualizovat zลฏstatek รบฤtu osoby. Tuto transakci mลฏลพete povolit umรญstฤnรญm zรกmku X na ni. Proto, kdyลพ druhรก transakce chce ฤรญst nebo zapisovat, vรฝhradnรญ zรกmek zabrรกnรญ tรฉto operaci.
3. Zjednoduลกenรฝ protokol zรกmku
Tento typ protokolลฏ zaloลพenรฝch na zรกmku umoลพลuje transakcรญm zรญskat zรกmek na kaลพdรฉm objektu pลed zahรกjenรญm operace. Transakce mohou odemknout datovou poloลพku po dokonฤenรญ operace โzรกpisโ.
4. Pลedbฤลพnรก reklamace zamykรกnรญ
Pre-claiming lock protocol pomรกhรก vyhodnotit operace a vytvoลit seznam poลพadovanรฝch datovรฝch poloลพek, kterรฉ jsou potลeba k zahรกjenรญ procesu provรกdฤnรญ. V situaci, kdy jsou udฤleny vลกechny zรกmky, se transakce provede. Potรฉ se vลกechny zรกmky uvolnรญ, kdyลพ vลกechny operace skonฤรญ.
Hladovฤnรญ
Hladovฤnรญ je situace, kdy transakce potลebuje ฤekat na dobu neurฤitou, aby zรญskala zรกmek.
Dลฏvody hladovฤnรญ jsou nรกsledujรญcรญ:
- Kdyลพ schรฉma ฤekรกnรญ na uzamฤenรฉ poloลพky nenรญ sprรกvnฤ spravovรกno
- V pลรญpadฤ รบniku zdrojลฏ
- Stejnรก transakce je vybrรกna jako obฤลฅ opakovanฤ
Zablokovรกnรญ
Zablokovรกnรญ oznaฤuje specifickou situaci, kdy dva nebo vรญce procesลฏ na sebe ฤekajรญ na uvolnฤnรญ zdroje nebo vรญce neลพ dva procesy ฤekajรญ na zdroj v kruhovรฉm ลetฤzci.
Protokol dvoufรกzovรฉho uzamฤenรญ
Protokol dvoufรกzovรฉho uzamฤenรญ takรฉ znรกmรฝ jako 2PL protokol je metoda kontroly soubฤลพnosti v DBMS, kterรก zajiลกลฅuje serializovatelnost pouลพitรญm zรกmku na transakฤnรญ data, kterรฝ blokuje ostatnรญ transakce pro souฤasnรฝ pลรญstup ke stejnรฝm datลฏm. Protokol Two Phase Locking pomรกhรก eliminovat problรฉm soubฤลพnosti v DBMS.
Tento zamykacรญ protokol rozdฤluje fรกzi provรกdฤnรญ transakce na tลi rลฏznรฉ ฤรกsti.
- V prvnรญ fรกzi, kdy se transakce zaฤรญnรก provรกdฤt, vyลพaduje povolenรญ pro zรกmky, kterรฉ potลebuje.
- Druhรก ฤรกst je mรญsto, kde transakce zรญskรก vลกechny zรกmky. Kdyลพ transakce uvolnรญ svลฏj prvnรญ zรกmek, spustรญ se tลetรญ fรกze.
- V tรฉto tลetรญ fรกzi nemลฏลพe transakce vyลพadovat ลพรกdnรฉ novรฉ zรกmky. Mรญsto toho pouze uvolnรญ zรญskanรฉ zรกmky.
Protokol dvoufรกzovรฉho zamykรกnรญ umoลพลuje kaลพdรฉ transakci provรฉst poลพadavek na zamknutรญ nebo odemknutรญ ve dvou krocรญch:
- Fรกze rลฏstu: V tรฉto fรกzi mลฏลพe transakce zรญskat zรกmky, ale nemusรญ uvolnit ลพรกdnรฉ zรกmky.
- Fรกze zmenลกovรกnรญ: V tรฉto fรกzi mลฏลพe transakce uvolnit zรกmky, ale nezรญskรก ลพรกdnรฝ novรฝ zรกmek
Je pravda, ลพe protokol 2PL nabรญzรญ serializovatelnost. Nezaruฤuje vลกak, ลพe nedojde k uvรกznutรญ.
Ve vรฝลกe uvedenรฉm diagramu mลฏลพete vidฤt, ลพe lokรกlnรญ a globรกlnรญ detektory uvรกznutรญ vyhledรกvajรญ uvรกznutรญ a ลeลกรญ je obnovenรญm transakcรญ do jejich pลฏvodnรญho stavu.
Pลรญsnรก metoda dvoufรกzovรฉho zamykรกnรญ
Systรฉm Strict-Two phase locking je tรฉmฤล podobnรฝ 2PL. Jedinรฝ rozdรญl je v tom, ลพe Strict-2PL po pouลพitรญ nikdy neuvolnรญ zรกmek. Podrลพรญ vลกechny zรกmky aลพ do bodu odevzdรกnรญ a uvolnรญ vลกechny zรกmky najednou, kdyลพ proces skonฤรญ.
Centralizovanรฉ 2PL
V Centralized 2 PL je za proces sprรกvy zรกmkลฏ odpovฤdnรฉ jedinรฉ mรญsto. Mรก pouze jednoho sprรกvce zรกmkลฏ pro celรฝ DBMS.
Primรกrnรญ kopie 2PL
Primรกrnรญ mechanismus kopรญrovรกnรญ 2PL, mnoho sprรกvcลฏ zรกmkลฏ je distribuovรกno na rลฏznรก mรญsta. Potรฉ je konkrรฉtnรญ sprรกvce zรกmku zodpovฤdnรฝ za sprรกvu zรกmku pro sadu datovรฝch poloลพek. Po aktualizaci primรกrnรญ kopie se zmฤna pลenese na podลรญzenรฉ jednotky.
Distribuovรกno 2PL
V tomto druhu dvoufรกzovรฉho zamykacรญho mechanismu jsou sprรกvci zรกmkลฏ distribuovรกni na vลกechna pracoviลกtฤ. Jsou zodpovฤdnรญ za sprรกvu zรกmkลฏ dat na tomto webu. Pokud nejsou replikovรกna ลพรกdnรก data, je ekvivalentem primรกrnรญ kopie 2PL. Komunikaฤnรญ nรกklady Distributed 2PL jsou pomฤrnฤ vyลกลกรญ neลพ primรกrnรญ kopie 2PL
Protokoly zaloลพenรฉ na ฤasovรฉm razรญtku
Protokol zaloลพenรฝ na ฤasovรฉm razรญtku v DBMS je algoritmus, kterรฝ pouลพรญvรก systรฉmovรฝ ฤas nebo logickรฝ ฤรญtaฤ jako ฤasovรฉ razรญtko k serializaci provรกdฤnรญ soubฤลพnรฝch transakcรญ. Protokol zaloลพenรฝ na ฤasovรฉ znaฤce zajiลกลฅuje, ลพe vลกechny konfliktnรญ operace ฤtenรญ a zรกpisu jsou provรกdฤny v poลadรญ ฤasovรฝch razรญtek.
U tรฉto metody mรก vลพdy pลednost starลกรญ transakce. K urฤenรญ ฤasovรฉho razรญtka transakce pouลพรญvรก systรฉmovรฝ ฤas. Toto je nejbฤลพnฤji pouลพรญvanรฝ soubฤลพnรฝ protokol.
Protokoly zaloลพenรฉ na uzamฤenรญ vรกm pomohou spravovat poลadรญ mezi konfliktnรญmi transakcemi, kdyลพ se provedou. Protokoly zaloลพenรฉ na ฤasovรฝch razรญtkรกch ลeลกรญ konflikty ihned po vytvoลenรญ operace.
Pลรญklad:
Suppose there are there transactions T1, T2, and T3. T1 has entered the system at time 0010 T2 has entered the system at 0020 T3 has entered the system at 0030 Priority will be given to transaction T1, then transaction T2 and lastly Transaction T3.
Vรฝhody:
- Plรกny lze serializovat stejnฤ jako protokoly 2PL
- ลฝรกdnรฉ ฤekรกnรญ na transakci, coลพ eliminuje moลพnost uvรกznutรญ!
Nevรฝhody:
Hladovฤnรญ je moลพnรฉ, pokud je stejnรก transakce znovu spuลกtฤna a neustรกle pลeruลกovรกna
Protokol zaloลพenรฝ na validaci
Protokol zaloลพenรฝ na validaci v DBMS takรฉ znรกmรฝ jako Optimistic Concurrency Control Technique je metoda, jak se vyhnout soubฤลพnosti v transakcรญch. V tomto protokolu se aktualizujรญ mรญstnรญ kopie dat transakce spรญลกe neลพ data samotnรก, coลพ mรก za nรกsledek menลกรญ ruลกenรญ pลi provรกdฤnรญ transakce.
Protokol zaloลพenรฝ na validaci se provรกdรญ v nรกsledujรญcรญch tลech fรกzรญch:
- Pลeฤtฤte si Fรกze
- Ovฤลovacรญ fรกze
- Napiลกte Fรกze
Pลeฤtฤte si Fรกze
Ve fรกzi ฤtenรญ mohou bรฝt hodnoty dat z databรกze ฤteny transakcรญ, ale operace zรกpisu nebo aktualizace se aplikujรญ pouze na mรญstnรญ kopie dat, nikoli na skuteฤnou databรกzi.
Ovฤลovacรญ fรกze
Ve fรกzi ovฤลenรญ jsou data kontrolovรกna, aby bylo zajiลกtฤno, ลพe nedojde k poruลกenรญ serializovatelnosti pลi aplikaci aktualizacรญ transakcรญ na databรกzi.
Napiลกte Fรกze
Ve fรกzi zรกpisu jsou aktualizace aplikovรกny na databรกzi, pokud je ovฤลenรญ รบspฤลกnรฉ, jinak; aktualizace se nepouลพijรญ a transakce bude vrรกcena zpฤt.
Charakteristika Good Concurrency Protocol
Ideรกlnรญ mechanismus DBMS pro kontrolu soubฤลพnosti mรก nรกsledujรญcรญ cรญle:
- Musรญ bรฝt odolnรฝ vลฏฤi vรฝpadkลฏm mรญsta a komunikace.
- Umoลพลuje paralelnรญ provรกdฤnรญ transakcรญ pro dosaลพenรญ maximรกlnรญ soubฤลพnosti.
- Jeho รบloลพnรฉ mechanismy a vรฝpoฤetnรญ metody by mฤly bรฝt skromnรฉ, aby se minimalizovala reลพie.
- Musรญ vynutit urฤitรก omezenรญ na strukturu atomickรฝch akcรญ transakcรญ.
Shrnutรญ
- Kontrola soubฤลพnosti je postup v DBMS pro ลรญzenรญ simultรกnnรญch operacรญ bez vzรกjemnรฉho konfliktu.
- Ztracenรฉ aktualizace, ลกpinavรฉ ฤtenรญ, neopakovatelnรฉ ฤtenรญ a nesprรกvnรฝ souhrnnรฝ problรฉm jsou problรฉmy, kterรฝm ฤelรญme kvลฏli nedostatku kontroly soubฤลพnosti.
- Zaloลพenรฉ na uzamฤenรญ, dvoufรกzovรฉ, zaloลพenรฉ na ฤasovรฉm razรญtku, zaloลพenรฉ na ovฤลenรญ jsou typy protokolลฏ pro zpracovรกnรญ soubฤลพnosti
- Zรกmek mลฏลพe bรฝt sdรญlenรฝ (S) nebo exkluzivnรญ (X)
- Protokol dvoufรกzovรฉho zamykรกnรญ, kterรฝ je takรฉ znรกmรฝ jako protokol 2PL, potลebuje, aby transakce zรญskala zรกmek potรฉ, co uvolnรญ jeden ze svรฝch zรกmkลฏ. Mรก 2 fรกze rลฏstu a zmenลกovรกnรญ.
- Algoritmus zaloลพenรฝ na ฤasovรฉm razรญtku pouลพรญvรก ฤasovรฉ razรญtko k serializaci provรกdฤnรญ soubฤลพnรฝch transakcรญ. Protokol pouลพรญvรก System Time nebo Logical Count as ฤasovรฉ razรญtko.

