Řízení souběžnosti v DBMS: Protokoly zamykání a časových razítek
⚡ Chytré shrnutí
Řízení souběžnosti v systémech DBMS spravuje simultánní transakce tak, aby probíhaly přesně bez narušení integrity dat. Zabraňuje anomáliím, jako jsou ztracené aktualizace a nečisté čtení, pomocí protokolů založených na zámkech, dvoufázových protokolech, protokolech založených na časových razítkách a protokolech založených na validaci, které zaručují serializovatelné výsledky.

Co je kontrola souběžnosti?
Kontrola souběžnosti V systému správy databází je postup pro správu simultánních operací bez vzájemných konfliktů. Zajišťuje, aby databázové transakce byly prováděny souběžně a přesně, a produkovaly tak správné výsledky bez narušení integrity dat příslušné databáze.
Souběžný přístup je poměrně snadný, pokud všichni uživatelé pouze čtou data, protože neexistuje způsob, jak by si mohli navzájem ovlivňovat. Nicméně každá praktická databáze má kombinaci operací ČTENÍ a ZÁPIS, a proto se souběžnost stává výzvou.
Řízení souběžnosti v DBMS se používá k řešení takových konfliktů, které se většinou vyskytují ve víceuživatelských systémech. Řízení souběžnosti je proto jedním z nejdůležitějších prvků pro správné fungování databáze, kde se dvě nebo více transakcí provádějí současně a vyžadují přístup ke stejným datům. Funguje ruku v ruce s... řízení transakcí, který definuje jednotky práce, které musí řízení souběžnosti bezpečně prokládat.
Potenciální problémy souběžnosti
Zde je několik problémů, se kterými se pravděpodobně setkáte bez řádné kontroly souběžnosti v DBMS:
- Ztracené aktualizace dochází, když více transakcí vybere stejný řádek a aktualizuje jej na základě vybrané hodnoty.
- Nepotvrzená závislost (nečisté čtení) nastává, když druhá transakce vybere řádek, který byl aktualizován jinou transakcí, která dosud nebyla potvrzena.
- Neopakovatelné čtení dochází, když druhá transakce několikrát přistupuje ke stejnému řádku a pokaždé čte jiná data.
- Nesprávný souhrn nastává, když jedna transakce shrne hodnotu všech výskytů opakované datové položky, zatímco druhá transakce aktualizuje několik z těchto výskytů. Výsledný souhrn neodráží správný výsledek.
Proč používat metodu souběžnosti?
Důvody pro použití metody řízení souběžnosti v DBMS:
- Aplikovat izolaci prostřednictvím vzájemného vyloučení mezi konfliktními transakcemi.
- Řešení problémů s konflikty čtení a zápisu a zápisu.
- Zachovat konzistenci databáze neustálým vynucováním omezení provádění.
- Řízení interakce mezi souběžnými transakcemi je dosaženo pomocí schémat řízení souběžnosti.
- Pro zajištění serializovatelnosti.
Příklad
Předpokládejme, že dva lidé jdou ve stejnou dobu k elektronickým kioskům, aby si koupili lístek do kina na stejný film a stejný čas promítání.
V kině je však na toto představení volné pouze jedno místo. Bez kontroly souběžnosti je možné, že si oba diváci kina nakonec koupí lístek. Kontrola souběžnosti to neumožňuje. Oba diváci kina mají stále přístup k informacím v databázi míst k sezení v kině, ale kontrola souběžnosti poskytne lístek pouze kupujícímu, který dokončí proces transakce jako první.
Protokoly kontroly souběžnosti
Různé protokoly pro řízení souběžnosti nabízejí různé kompromisy mezi povoleným množstvím souběžnosti a režijními náklady. Hlavní techniky řízení souběžnosti v systémech DBMS jsou:
- Protokoly založené na zámku
- Dvoufázový zamykací protokol
- Protokoly založené na časovém razítku
- Protokoly založené na validaci
Každý z nich je postupně zkoumán níže, počínaje nejpoužívanějšími protokoly založenými na zámkech.
Protokoly založené na zámku
Protokoly založené na zámkech V systémech DBMS jsou mechanismy, ve kterých transakce nemůže číst ani zapisovat datovou položku, dokud nezíská vhodný zámek. Protokoly založené na zámcích pomáhají eliminovat problém souběžnosti uzamčením nebo izolací konkrétní datové položky do jedné transakce.
Zámek je datová proměnná spojená s datovou položkou, která označuje, jaké operace s ní lze provádět. Zámky pomáhají synchronizovat přístup k databázovým položkám prostřednictvím souběžných transakcí. Všechny požadavky na zámek jsou odesílány správci řízení souběžnosti a transakce pokračují až po schválení požadavku na zámek.
Binární zámky: Binární zámek datové položky může být v uzamčeném nebo odemčeném stavu.
Sdílené/Exkluzivní: Tento zamykací mechanismus odděluje zámky na základě jejich použití. Pokud je zámek získán pro provedení operace zápisu, nazývá se exkluzivní zámek.
1. Sdílený zámek (S): Sdílený zámek se také nazývá zámek pouze pro čtení. U sdíleného zámku lze datovou položku sdílet mezi transakcemi, protože žádná z nich nemá oprávnění k aktualizaci položky. Pokud například dvě transakce čtou zůstatek na účtu osoby, databáze umožňuje jim číst umístěním sdíleného zámku. Pokud chce jiná transakce aktualizovat tento zůstatek, sdílený zámek to zabrání, dokud není čtení dokončeno.
2. Exkluzivní zámek (X): S exkluzivním zámkem lze datovou položku číst i zapisovat. Je exkluzivní a nelze jej uchovávat současně na stejné datové položce. X-lock se vyžaduje pomocí instrukce lock-x. Například když transakce potřebuje aktualizovat zůstatek na účtu, je to povoleno umístěním X-locku; druhá transakce, která chce číst nebo zapisovat, je pak zabráněno.
3. Zjednodušený protokol zámku: To umožňuje transakcím získat zámek na každém objektu před zahájením operace. Transakce mohou datovou položku odemknout po dokončení operace zápisu.
4. Zablokování před uplatněním nároku: Tento protokol vyhodnocuje operace a vytváří seznam datových položek potřebných k zahájení provádění. Po udělení všech zámků se transakce provede a všechny zámky se uvolní po dokončení jejích operací.
Hladovění: Hladovění je situace, kdy transakce čeká na získání zámku po neurčitou dobu. Mezi důvody patří špatně spravovaný systém čekání na uzamčené položky, únik zdrojů nebo opakované vybírání stejné transakce jako oběti.
Zablokování: Zablokování označuje situaci, kdy dva nebo více procesů čekají na to, až si navzájem uvolní zdroj, a tvoří tak kruhový řetězec.
Protokol dvoufázového blokování (2PL)
Jedno Dvoufázový zamykací protokol, také známá jako 2PL, je metoda řízení souběžnosti, která zajišťuje serializovatelnost aplikací zámku na transakční data, což blokuje ostatním transakcím současný přístup ke stejným datům.
Protokol dvoufázového zamykání umožňuje, aby každá transakce podala požadavek na zamčení nebo odemčení ve dvou krocích:
- Fáze růstu: V této fázi může transakce získat zámky, ale nemusí je uvolnit.
- Fáze zmenšování: V této fázi může transakce uvolnit zámky, ale nemusí získat žádný nový zámek.
Je pravda, že 2PL nabízí serializovatelnost. Nezaručuje to však, že k deadlockům nedojde. Na výše uvedeném diagramu lokální a globální detektory deadlocků vyhledávají deadlocky a řeší je obnovením transakcí do jejich počátečního stavu.
Přísná metoda dvoufázového zamykání
Strict 2PL je téměř stejný jako 2PL. Jediný rozdíl je v tom, že Strict-2PL nikdy neuvolní zámek po jeho použití. Zadrží všechny zámky až do bodu commitu a uvolní je všechny najednou, když je proces ukončen.
Centralizované 2PL
V centralizovaném 2PL je za proces správy zámků zodpovědné jedno pracoviště. Má pouze jednoho správce zámků pro celý systém správy databází (DBMS).
Primární kopie 2PL
V mechanismu Primary Copy 2PL je mnoho správců zámků distribuováno na různá pracoviště a konkrétní správce zámků je zodpovědný za správu zámku pro sadu datových položek. Když je primární kopie aktualizována, změna se rozšíří na podřízené servery.
Distribuováno 2PL
V tomto mechanismu jsou správci zámků distribuováni všem lokalitám a jsou zodpovědní za správu zámků pro data na dané lokalitě. Pokud nejsou žádná data replikována, jedná se o primární kopii 2PL. Komunikační náklady distribuované kopie 2PL jsou o dost vyšší než u primární kopie 2PL.
Protokoly založené na časovém razítku
Jedno 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í. Zajišťuje, aby každá konfliktní operace čtení a zápisu byla provedena v pořadí podle časového razítka.
V této metodě má vždy prioritu starší transakce. K určení časového razítka transakce se používá systémový čas a je to nejčastěji používaný protokol pro souběžnost. Protokoly založené na zámkech spravují pořadí mezi konfliktními transakcemi při jejich provádění; protokoly založené na časových razítkách spravují konflikty, jakmile je operace vytvořena.
Příklad:
Suppose there are three 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 T2 and lastly T3.
Výhody:
- Harmonogramy jsou serializovatelné, stejně jako protokoly 2PL.
- Žádné čekání na transakci, což eliminuje možnost zablokování.
Nevýhody: Hladovění je možné, pokud je stejná transakce restartována a neustále přerušována.
Protokol založený na validaci
Jedno Protokol založený na validaci V DBMS, známá také jako technika optimistického řízení souběžnosti, je metoda, která zabraňuje konfliktům souběžnosti v transakcích. V tomto protokolu se aktualizují lokální kopie dat transakcí, nikoli samotná data, což má za následek menší rušení během provádění.
Protokol založený na validaci se provádí ve 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í lze datové hodnoty číst transakcí, ale operace zápisu nebo aktualizace se aplikují pouze na lokální kopie dat, nikoli na samotnou databázi.
Ověřovací fáze
Ve fázi validace se kontrolují data, aby se zajistilo, že použití aktualizací nenaruší serializovatelnost.
Napište Fáze
Ve fázi zápisu se aktualizace aplikují na databázi, pokud je ověření úspěšné; v opačném případě se aktualizace zahodí a transakce se vrátí zpět.
Porovnání protokolů pro řízení souběžnosti
Čtyři rodiny protokolů se liší v tom, jak často transakce skutečně konfliktují. Níže uvedená tabulka shrnuje, kam každá z nich patří.
| Protokol | Přístup | Zablokování | Nejlepší kdy |
|---|---|---|---|
| Založené na zámku | Pesimistický, zamyká před přístupem | Možný | Konflikty jsou časté |
| Dvoufázové uzamčení | Pesimistické, rostoucí a zmenšující se fáze | Možný | Je vyžadována serializovatelnost. |
| Na základě časového razítka | Objednávky podle časového razítka | Bez zablokování | Na objednávání záleží, čekání je drahé |
| Založené na validaci | Optimistický, ověřit před zápisem | Bez zablokování | Konflikty jsou vzácné |
Stručně řečeno, protokoly založené na zámkech a 2PL předpokládají, že konflikt je běžný a předem mu předcházejí, zatímco protokoly časových razítek a validace předpokládají, že konflikt je vzácný a řeší ho, pouze když se objeví.
Charakteristiky dobrého protokolu pro souběžnost
Ideální mechanismus řízení souběžnosti má následující cíle:
- Musí být odolný vůči selhání lokality 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í vynucovat určitá omezení struktury atomických akcí transakcí.

