Ří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.

  • 👥 Hlavní účel: Řízení souběžnosti umožňuje mnoha transakcím najednou komunikovat se sdílenými daty a zároveň uchovávatping databáze konzistentní.
  • ⚠️ Zabráněné anomálie: Ztracená aktualizace, nečisté čtení, neopakovatelné čtení a nesprávný souhrn jsou čtyři problémy, které zastavuje.
  • 🔒 Založené na zámku: Sdílené a exkluzivní zámky řídí, zda mohou ostatní číst nebo zapisovat datovou položku.
  • 🔁 Dvoufázové uzamčení: Rostoucí fáze získává zámky a zmenšující se fáze je uvolňuje, což zaručuje serializovatelnost.
  • ⏱️ Na základě časového razítka: Starší transakce mají prioritu a konfliktní operace jsou seřazeny podle časového razítka systému.
  • (Tj. Založené na validaci: Optimistické řízení funguje na lokálních kopiích a ověřuje je pouze před fází zápisu.
  • 🎯 Cíl: Maximální souběžnost s minimálními režijními náklady, odolnost vůči selhání lokality a komunikace.

Plánovače zamykání a časových razítek v DBMS

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.

Dvoufázové blokování fází růstu a smršťování

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:

  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í 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í.

Nejčastější dotazy

Sdílený zámek umožňuje souběžné čtení, ale ne zápis, takže jej může uchovávat několik transakcí. Exkluzivní zámek umožňuje čtení a zápis a nelze jej sdílet, takže jej může uchovávat pouze jedna transakce.

Č. 2PL zaručuje serializovatelnost, ale ne absenci deadlocku. Dvě transakce mohou stále čekat na vzájemné zámky, takže je stále potřeba samostatný mechanismus detekce nebo časového limitu.

Když jsou konflikty vzácné. Řízení založené na validaci zabraňuje režii zamykání a umožňuje transakcím volný průběh, kontroluje pouze při potvrzení (commitu). Při silném konfliktu plýtvá prací častými vráceními zpět.

Umělá inteligence studuje minulé úlohy, aby předpověděla, které transakce budou konfliktovat, a poté doporučí úroveň izolace nebo granularitu zámku, která zvýší propustnost a zároveň zachová...ping výsledky serializovatelné.

Nikdy nenechává transakci čekat. Konfliktní operace je buď povolena časovým razítkem, nebo je transakce přerušena a restartována, takže nemůže dojít k cyklickému čekání a k deadlocku.

Shrňte tento příspěvek takto: