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.