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 uzamฤenรญ

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:

  1. Pล™eฤtฤ›te si Fรกze
  2. Ovฤ›ล™ovacรญ fรกze
  3. 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.

Shrลˆte tento pล™รญspฤ›vek takto: