Kontrola konkurentnosti DBMS-a: protokoli zaključavanja i vremenskih oznaka
⚡ Pametni sažetak
Kontrola konkurentnosti u DBMS-u upravlja simultanim transakcijama tako da se one izvršavaju točno bez narušavanja integriteta podataka. Sprječava anomalije poput izgubljenih ažuriranja i prljavih čitanja korištenjem protokola temeljenih na zaključavanju, dvofaznim, vremenskim oznakama i validaciji koji jamče serijalizabilne rezultate.

Što je kontrola istodobnosti?
Kontrola istodobnosti U sustavu za upravljanje bazama podataka postupak je za upravljanje istovremenim operacijama bez međusobnog sukoba. Osigurava da se transakcije baze podataka izvršavaju istovremeno i točno kako bi se dobili ispravni rezultati bez narušavanja integriteta podataka odgovarajuće baze podataka.
Istodobni pristup je prilično jednostavan ako svi korisnici samo čitaju podatke, jer ne postoji način da se međusobno miješaju. Međutim, svaka praktična baza podataka ima kombinaciju operacija ČITANJA i PISANJA, pa istodobnost postaje izazov.
Kontrola konkurentnosti DBMS-a koristi se za rješavanje takvih sukoba, koji se uglavnom javljaju u sustavima s više korisnika. Kontrola konkurentnosti stoga je jedan od najvažnijih elemenata za pravilno funkcioniranje baze podataka gdje se dvije ili više transakcija izvršavaju istovremeno i zahtijevaju pristup istim podacima. Radi ruku pod ruku s upravljanje transakcijama, koji definira jedinice rada koje kontrola konkurentnosti mora sigurno ispreplitati.
Potencijalni problemi istodobnosti
Evo nekih problema s kojima se vjerojatno možete susresti bez odgovarajuće kontrole konkurentnosti DBMS-a:
- Izgubljena ažuriranja javljaju se kada više transakcija odabere isti redak i ažurira ga na temelju odabrane vrijednosti.
- Nepotvrđena ovisnost (prljavo čitanje) se događa kada druga transakcija odabere red koji je ažurirala druga transakcija koja još nije potvrđena.
- Čitanje koje se ne ponavlja događa se kada druga transakcija pristupa istom retku nekoliko puta i svaki put čita različite podatke.
- Netočan sažetak događa se kada jedna transakcija uzima sažetak vrijednosti svih instanci ponovljene podatkovne stavke dok druga transakcija ažurira nekoliko tih instanci. Rezultirajući sažetak ne odražava točan rezultat.
Zašto koristiti metodu konkurentnosti?
Razlozi za korištenje metode kontrole konkurentnosti u DBMS-u:
- Primijeniti izolaciju putem međusobnog isključenja između konfliktnih transakcija.
- Za rješavanje problema sukoba čitanja i pisanja te pisanja i pisanja.
- Očuvanje konzistentnosti baze podataka stalnim provođenjem ograničenja izvršavanja.
- Za kontrolu interakcije među istodobnim transakcijama, što se postiže korištenjem shema kontrole istodobnosti.
- Kako bi se osigurala serijalizabilnost.
Primjer
Pretpostavimo da dvije osobe istovremeno odlaze na elektroničke kioske kako bi kupile kino kartu za isti film i isto vrijeme prikazivanja.
Međutim, u kinu je ostalo samo jedno mjesto za tu predstavu. Bez kontrole konkurentnosti, moguće je da će oba gledatelja kina na kraju kupiti kartu. Kontrola konkurentnosti to ne dopušta. Oba gledatelja kina i dalje mogu pristupiti informacijama u bazi podataka o sjedalima u kinu, ali kontrola konkurentnosti osigurava kartu samo kupcu koji prvi dovrši proces transakcije.
Protokoli kontrole istodobnosti
Različiti protokoli za kontrolu konkurentnosti nude različite kompromise između količine konkurentnosti koju dopuštaju i opterećenja koje nameću. Glavne tehnike kontrole konkurentnosti u DBMS-u su:
- Protokoli koji se temelje na zaključavanju
- Protokol dvofaznog zaključavanja
- Protokoli temeljeni na vremenskim oznakama
- Protokoli temeljeni na validaciji
Svaki od njih redom se ispituje u nastavku, počevši od najčešće korištenih protokola temeljenih na zaključavanju.
Protokoli koji se temelje na zaključavanju
Protokoli temeljeni na zaključavanju U DBMS-u su mehanizam u kojem transakcija ne može čitati ili pisati podatkovnu stavku dok ne dobije odgovarajuću bravu. Protokoli temeljeni na bravi pomažu u uklanjanju problema konkurentnosti zaključavanjem ili izoliranjem određene podatkovne stavke na jednu transakciju.
Brava je podatkovna varijabla povezana s podatkovnom stavkom koja označava koje se operacije mogu izvršiti na njoj. Brave pomažu u sinkronizaciji pristupa stavkama baze podataka putem istodobnih transakcija. Svi zahtjevi za zaključavanje upućuju se upravitelju kontrole istodobnosti, a transakcije se nastavljaju tek nakon što je zahtjev za zaključavanje odobren.
Binarne brave: Binarna brava na podatkovnoj stavci može biti u zaključanom ili otključanom stanju.
Dijeljeno/Ekskluzivno: Ovaj mehanizam zaključavanja odvaja brave na temelju njihove upotrebe. Ako se brava pribavi za izvođenje operacije pisanja, to se naziva ekskluzivna brava.
1. Zajednička brava (S): Dijeljena brava se naziva i brava samo za čitanje. Kod dijeljene brave, podatkovna stavka može se dijeliti između transakcija jer nijedna od njih nema dopuštenje za ažuriranje stavke. Na primjer, ako dvije transakcije čitaju stanje na računu osobe, baza podataka omogućuje im čitanje postavljanjem zajedničke brave. Ako neka druga transakcija želi ažurirati taj saldo, zajednička brava to sprječava dok se čitanje ne završi.
2. Ekskluzivna brava (X): S ekskluzivnim zaključavanjem, podatkovna stavka može se čitati i pisati. Isključiva je i ne može se istovremeno držati na istoj podatkovnoj stavci. X-zaključavanje se zahtijeva pomoću instrukcije lock-x. Na primjer, kada transakcija treba ažurirati stanje računa, to se dopušta postavljanjem X-zaključavanja; druga transakcija koja želi čitati ili pisati tada se sprječava.
3. Protokol pojednostavljenog zaključavanja: To omogućuje transakcijama da zaključaju svaki objekt prije početka operacije. Transakcije mogu otključati podatkovnu stavku nakon završetka operacije pisanja.
4. Zaključavanje prije podnošenja zahtjeva: Ovaj protokol procjenjuje operacije i stvara popis podataka potrebnih za početak izvršavanja. Kada su sva zaključavanja odobrena, transakcija se izvršava i sva zaključavanja se otpuštaju nakon završetka operacija.
Gladovanje: Gladovanje je situacija kada transakcija čeka neodređeno vrijeme da bi dobila zaključavanje. Razlozi uključuju loše upravljanu shemu čekanja za zaključane stavke, curenje resursa ili ponovljeni odabir iste transakcije kao žrtve.
Zastoj: Zastoj se odnosi na situaciju u kojoj dva ili više procesa čekaju jedan da drugi oslobode resurs, formirajući kružni lanac.
Protokol dvofaznog zaključavanja (2PL)
The Protokol dvofaznog zaključavanja, također poznat kao 2PL, je metoda kontrole konkurentnosti koja osigurava serijalizabilnost primjenom zaključavanja na podatke o transakcijama, što blokira druge transakcije da istovremeno pristupaju istim podacima.
Protokol dvofaznog zaključavanja omogućuje svakoj transakciji da zatraži zaključavanje ili otključavanje u dva koraka:
- Faza rasta: U ovoj fazi transakcija može dobiti brave, ali ih ne mora otključati.
- Faza smanjenja: U ovoj fazi transakcija može otključati brave, ali ne mora dobiti novu bravu.
Istina je da 2PL nudi serijalizabilnost. Međutim, to ne jamči da se zastoji ne događaju. Na gornjem dijagramu, lokalni i globalni detektori zastoja traže zastoje i rješavaju ih nastavkom transakcija u njihovo početno stanje.
Stroga dvofazna metoda zaključavanja
Strict 2PL je gotovo isti kao 2PL. Jedina je razlika što Strict-2PL nikada ne otpušta bravu nakon korištenja. Drži sve brave do točke potvrde i otpušta ih sve odjednom kada je proces završen.
Centralizirani 2PL
U centraliziranom 2PL-u, jedna lokacija je odgovorna za proces upravljanja bravama. Ima samo jednog upravitelja brava za cijeli DBMS.
Primarna kopija 2PL
U mehanizmu primarne kopije 2PL, mnogi upravitelji brava distribuirani su na različite lokacije, a određeni upravitelj brava odgovoran je za upravljanje bravom za skup podataka. Kada se primarna kopija ažurira, promjena se širi na podređene uređaje.
Distribuirano 2PL
U ovom mehanizmu, upravitelji brava distribuirani su na sve lokacije i odgovorni su za upravljanje bravama za podatke na toj lokaciji. Ako se podaci ne repliciraju, to je ekvivalentno primarnoj kopiji 2PL. Troškovi komunikacije distribuirane 2PL su znatno veći od onih primarne kopije 2PL.
Protokoli temeljeni na vremenskim oznakama
The Protokol temeljen na vremenskim žigovima U DBMS-u je algoritam koji koristi sistemsko vrijeme ili logički brojač kao vremensku oznaku za serijalizaciju izvršavanja istodobnih transakcija. Osigurava da se svaka konfliktna operacija čitanja i pisanja izvršava redoslijedom vremenske oznake.
Starija transakcija uvijek ima prioritet u ovoj metodi. Koristi sistemsko vrijeme za određivanje vremenske oznake transakcije i to je najčešće korišteni protokol za konkurentnost. Protokoli temeljeni na zaključavanju upravljaju redoslijedom između sukobljenih transakcija prilikom njihovog izvršavanja; protokoli temeljeni na vremenskim oznakama upravljaju sukobima čim se operacija stvori.
Primjer:
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.
Prednosti:
- Rasporedi se mogu serijalizirati, baš kao i 2PL protokoli.
- Nema čekanja na transakciju, što eliminira mogućnost zastoja.
Nedostaci: Izgladnjivanje je moguće ako se ista transakcija ponovno pokreće i kontinuirano prekida.
Protokol temeljen na validaciji
The Protokol temeljen na validaciji U DBMS-u, poznata i kao tehnika optimistične kontrole konkurentnosti, metoda je za izbjegavanje sukoba konkurentnosti u transakcijama. U ovom protokolu ažuriraju se lokalne kopije podataka o transakcijama, a ne sami podaci, što rezultira manjim smetnjama tijekom izvršavanja.
Protokol temeljen na validaciji provodi se u tri faze:
- Pročitajte Fazu
- Faza provjere valjanosti
- Napiši fazu
Pročitajte Fazu
U fazi čitanja, transakcija može pročitati vrijednosti podataka, ali operacije pisanja ili ažuriranja primjenjuju se samo na lokalne kopije podataka, a ne na stvarnu bazu podataka.
Faza provjere valjanosti
U fazi validacije, podaci se provjeravaju kako bi se osiguralo da primjena ažuriranja neće narušiti serijalizabilnost.
Napiši fazu
U fazi pisanja, ažuriranja se primjenjuju na bazu podataka ako je validacija uspješna; u suprotnom se ažuriranja odbacuju i transakcija se poništava.
Usporedba protokola za kontrolu konkurentnosti
Četiri obitelji protokola prave različite oklade o tome koliko često se transakcije zapravo sukobljavaju. Tablica u nastavku sažima gdje se svaki uklapa.
| Protokol | Pristup | Zastoj | Najbolje kada |
|---|---|---|---|
| Na temelju brave | Pesimističan, zaključava prije pristupa | Moguć | Sukobi su česti |
| Dvofazno zaključavanje | Pesimistična, rastuća i smanjivajuća faza | Moguć | Serijalizabilnost je obavezna |
| Na temelju vremenske oznake | Narudžbe prema vremenskoj oznaci | Bez zastoja | Naručivanje je važno, čekanje je skupo |
| Na temelju validacije | Optimističan, potvrdi prije pisanja | Bez zastoja | Sukobi su rijetki |
Ukratko, protokoli temeljeni na zaključavanju i 2PL pretpostavljaju da je sukob uobičajen i sprječavaju ga unaprijed, dok protokoli vremenske oznake i validacije pretpostavljaju da je sukob rijedak i rješavaju ga tek kada se pojavi.
Karakteristike dobrog protokola za konkurentnost
Idealni mehanizam kontrole konkurentnosti ima sljedeće ciljeve:
- Mora biti otporan na kvarove na lokaciji i u komunikaciji.
- Omogućuje paralelno izvršavanje transakcija kako bi se postigla maksimalna istodobnost.
- Njegovi mehanizmi za pohranjivanje i računalne metode trebaju biti skromni kako bi se troškovi sveli na minimum.
- Mora nametnuti neka ograničenja na strukturu atomskih akcija transakcija.

