Controlul concurenței DBMS: marcaj temporal și protocoale bazate pe blocare
Ce este controlul concurenței?
Controlul concurenței în Database Management System este o procedură de gestionare a operațiunilor simultane fără a intra în conflict între ele. Acesta asigură că tranzacțiile cu baze de date sunt efectuate concomitent și cu acuratețe pentru a produce rezultate corecte, fără a încălca integritatea datelor respectivei baze de date.
Accesul simultan este destul de ușor dacă toți utilizatorii citesc doar date. Nu există nicio modalitate de a interfera unul cu celălalt. Deși pentru orice bază de date practică, ar avea o combinație de operațiuni de CITIRE și SCRIERE și, prin urmare, concurența este o provocare.
Controlul concurenței DBMS este utilizat pentru a rezolva astfel de conflicte, care apar în mare parte cu un sistem multi-utilizator. Prin urmare, Controlul concurenței este cel mai important element pentru buna funcționare a unui Sistem de management al bazelor de date în care două sau mai multe tranzacții de baze de date sunt executate simultan, care necesită acces la aceleași date.
Potențiale probleme de concurență
Iată câteva probleme cu care probabil vă veți confrunta în timp ce utilizați metoda de control al concurenței DBMS:
- Actualizări pierdute apare atunci când mai multe tranzacții selectează același rând și actualizează rândul în funcție de valoarea selectată
- Problemele de dependență neangajate apar atunci când a doua tranzacție selectează un rând care este actualizat de o altă tranzacție (citit murdar)
- Citire nerepetabilă apare atunci când o a doua tranzacție încearcă să acceseze același rând de mai multe ori și citește date diferite de fiecare dată.
- Problemă cu rezumatul incorect apare atunci când o tranzacție realizează un rezumat peste valoarea tuturor instanțelor unui element de date repetat, iar a doua tranzacție actualizează câteva cazuri ale acelui element de date specific. În această situație, rezumatul rezultat nu reflectă un rezultat corect.
De ce să folosiți metoda concurenței?
Motivele pentru care se utilizează metoda de control al concurenței este DBMS:
- Să aplice Izolarea prin excluderea reciprocă între tranzacțiile aflate în conflict
- Pentru a rezolva problemele de conflict de citire-scriere și scriere-scriere
- Pentru a păstra consistența bazei de date prin păstrarea constantă a obstacolelor la execuție
- Sistemul trebuie să controleze interacțiunea dintre tranzacțiile concurente. Acest control se realizează folosind scheme de control concurent.
- Controlul concurenței ajută la asigurarea serializării
Exemplu
Să presupunem că două persoane care merg la chioșcuri electronice în același timp pentru a cumpăra un bilet de film pentru același film și aceeași oră de spectacol.
Cu toate acestea, mai rămâne un singur loc pentru spectacolul de film în acel teatru special. Fără controlul concurenței în DBMS, este posibil ca ambii cinefili să ajungă să cumpere un bilet. Cu toate acestea, metoda de control al concurenței nu permite acest lucru. Ambii cinefili pot accesa în continuare informațiile scrise în baza de date a locurilor de film. Dar controlul concurenței oferă doar un bilet cumpărătorului care a finalizat mai întâi procesul de tranzacție.
Protocoale de control al concurenței
Diferitele protocoale de control al concurenței oferă beneficii diferite între cantitatea de concurență pe care o permit și cantitatea de cheltuieli generale pe care o impun. Următoarele sunt tehnicile de control al concurenței în DBMS:
- Protocoale bazate pe blocare
- Protocol de blocare în două faze
- Protocoale bazate pe marca temporală
- Protocoale bazate pe validare
Protocoale bazate pe blocare
Protocoale bazate pe blocare în DBMS este un mecanism în care o tranzacție nu poate citi sau scrie datele până când nu obține o blocare adecvată. Protocoalele bazate pe blocare ajută la eliminarea problemei concurenței în DBMS pentru tranzacțiile simultane prin blocarea sau izolarea unei anumite tranzacții pentru un singur utilizator.
O blocare este o variabilă de date care este asociată cu un element de date. Această blocare înseamnă că operațiunile care pot fi efectuate asupra articolului de date. Blocările în DBMS ajută la sincronizarea accesului la elementele bazei de date prin tranzacții concurente.
Toate cererile de blocare sunt făcute către managerul de control al concurenței. Tranzacțiile au loc numai după ce solicitarea de blocare este acordată.
Blocări binare: O blocare binară a unui element de date poate fi blocat sau deblocat.
Partajat/exclusiv: Acest tip de mecanism de blocare separă încuietorile din DBMS în funcție de utilizările lor. Dacă o blocare este obținută pe un element de date pentru a efectua o operație de scriere, se numește blocare exclusivă.
1. Blocare comună (S):
O blocare partajată se mai numește și blocare numai pentru citire. Cu blocarea partajată, elementul de date poate fi partajat între tranzacții. Acest lucru se datorează faptului că nu veți avea niciodată permisiunea de a actualiza datele despre elementul de date.
De exemplu, luați în considerare un caz în care două tranzacții citesc soldul contului unei persoane. The Baza de date le va lăsa să citească prin plasarea unui lacăt comun. Cu toate acestea, dacă o altă tranzacție dorește să actualizeze soldul contului respectiv, blocarea partajată o împiedică până când procesul de citire se încheie.
2. Blocare exclusivă (X):
Cu blocarea exclusivă, un element de date poate fi citit și scris. Acest lucru este exclusiv și nu poate fi păstrat simultan pentru același element de date. X-lock este solicitat folosind instrucțiunea lock-x. Tranzacțiile pot debloca elementul de date după terminarea operațiunii de „scriere”.
De exemplu, atunci când o tranzacție trebuie să actualizeze soldul contului unei persoane. Puteți permite această tranzacție prin plasarea X lock pe ea. Prin urmare, atunci când a doua tranzacție dorește să citească sau să scrie, blocarea exclusivă împiedică această operațiune.
3. Protocol de blocare simplist
Acest tip de protocoale bazate pe blocare permite tranzacțiilor să obțină o blocare pe fiecare obiect înainte de a începe operarea. Tranzacțiile pot debloca elementul de date după terminarea operațiunii de „scriere”.
4. Închidere pre-revendicare
Protocolul de blocare înainte de revendicare ajută la evaluarea operațiunilor și la crearea unei liste de elemente de date necesare care sunt necesare pentru a iniția un proces de execuție. În situația în care toate blocările sunt acordate, tranzacția se execută. După aceea, toate încuietorii se eliberează când toate operațiunile sale se încheie.
înfometare
Înfometarea este situația în care o tranzacție trebuie să aștepte o perioadă nedeterminată pentru a obține un lacăt.
Următoarele sunt motivele înfometării:
- Atunci când schema de așteptare pentru articolele blocate nu este gestionată corespunzător
- În cazul scurgerii de resurse
- Aceeași tranzacție este selectată ca victimă în mod repetat
Impas
Deadlock se referă la o situație specifică în care două sau mai multe procese se așteaptă unul pe celălalt să elibereze o resursă sau mai mult de două procese așteaptă resursa într-un lanț circular.
Protocol de blocare în două faze
Protocol de blocare în două faze cunoscut și sub numele de protocol 2PL este o metodă de control al concurenței în DBMS care asigură serializabilitatea prin aplicarea unei blocări datelor tranzacției care blochează alte tranzacții pentru a accesa aceleași date simultan. Protocolul de blocare în două faze ajută la eliminarea problemei concurenței în DBMS.
Acest protocol de blocare împarte faza de execuție a unei tranzacții în trei părți diferite.
- În prima fază, când tranzacția începe să se execute, necesită permisiunea pentru blocările de care are nevoie.
- A doua parte este în cazul în care tranzacția obține toate blocajele. Când o tranzacție își eliberează primul blocare, începe a treia fază.
- În această a treia fază, tranzacția nu poate solicita noi blocări. În schimb, eliberează doar încuietorile dobândite.
Protocolul de blocare în două faze permite fiecărei tranzacții să facă o cerere de blocare sau deblocare în doi pași:
- Faza de crestere: În această fază, tranzacția poate obține blocări, dar nu poate elibera niciunul.
- Faza de micsorare: În această fază, o tranzacție poate elibera blocări, dar nu obține nicio blocare nouă
Este adevărat că protocolul 2PL oferă serializare. Cu toate acestea, nu asigură faptul că blocajele nu au loc.
În diagrama de mai sus, puteți vedea că detectorii de blocaje locali și globale caută blocaje și le rezolvă prin reluarea tranzacțiilor la stările lor inițiale.
Metodă strictă de blocare în două faze
Sistemul de blocare strict în două faze este aproape similar cu 2PL. Singura diferență este că Strict-2PL nu eliberează niciodată un blocaj după ce îl folosește. Deține toate blocajele până la punctul de comitere și eliberează toate blocajele dintr-o dată când procesul se termină.
Centralizat 2PL
În Centralized 2 PL, un singur site este responsabil pentru procesul de gestionare a ecluzei. Are un singur manager de blocare pentru întregul SGBD.
Copie primară 2PL
Mecanism primar de copiere 2PL, mulți manageri de blocare sunt distribuite pe site-uri diferite. După aceea, un anumit manager de blocare este responsabil pentru gestionarea blocării pentru un set de elemente de date. Când copia primară a fost actualizată, modificarea este propagată către slave.
Distribuit 2PL
În acest tip de mecanism de blocare în două faze, managerii de blocare sunt distribuite tuturor site-urilor. Aceștia sunt responsabili pentru gestionarea blocărilor pentru datele de pe site-ul respectiv. Dacă nu sunt replicate date, aceasta este echivalentă cu copia primară 2PL. Costurile de comunicare ale 2PL distribuite sunt destul de mai mari decât ale copiei primare 2PL
Protocoale bazate pe marca temporală
Protocol bazat pe marca temporală în DBMS este un algoritm care folosește ora sistemului sau contorul logic ca marca temporală pentru a serializa execuția tranzacțiilor concurente. Protocolul bazat pe marca temporală asigură că toate operațiunile de citire și scriere aflate în conflict sunt executate într-o ordine de marcare temporală.
Tranzacția mai veche are întotdeauna prioritate în această metodă. Utilizează ora sistemului pentru a determina marca temporală a tranzacției. Acesta este protocolul de concurență cel mai frecvent utilizat.
Protocoalele bazate pe blocare vă ajută să gestionați ordinea dintre tranzacțiile aflate în conflict atunci când acestea se vor executa. Protocoalele bazate pe marca temporală gestionează conflictele de îndată ce este creată o operațiune.
Exemplu:
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.
Avantaje:
- Programele sunt serializabile la fel ca protocoalele 2PL
- Fără așteptare pentru tranzacție, ceea ce elimină posibilitatea blocajelor!
Dezavantaje:
Înfometarea este posibilă dacă aceeași tranzacție este repornită și întreruptă continuu
Protocol bazat pe validare
Protocol bazat pe validare în DBMS, cunoscută și sub numele de Tehnica de control optimist al concurenței, este o metodă de evitare a concurenței în tranzacții. În acest protocol, copiile locale ale datelor tranzacției sunt actualizate mai degrabă decât datele în sine, ceea ce duce la mai puține interferențe în timpul execuției tranzacției.
Protocolul bazat pe validare se realizează în următoarele trei faze:
- Faza de citire
- Faza de validare
- Faza de scriere
Faza de citire
În faza de citire, valorile datelor din baza de date pot fi citite printr-o tranzacție, dar operația de scriere sau actualizările sunt aplicate doar copiilor de date locale, nu bazei de date efective.
Faza de validare
În faza de validare, datele sunt verificate pentru a se asigura că nu există nicio încălcare a serializării în timpul aplicării actualizărilor tranzacției la baza de date.
Faza de scriere
În faza de scriere, actualizările sunt aplicate bazei de date dacă validarea are succes, altfel; actualizările nu sunt aplicate, iar tranzacția este anulată.
Caracteristicile protocolului de concurență bună
Un mecanism SGBD de control al concurenței ideal are următoarele obiective:
- Trebuie să fie rezistent la defecțiunile site-ului și de comunicare.
- Permite executarea paralelă a tranzacțiilor pentru a obține concurență maximă.
- Mecanismele sale de stocare și metodele de calcul ar trebui să fie modeste pentru a minimiza cheltuielile generale.
- Trebuie să impună unele constrângeri asupra structurii acțiunilor atomice ale tranzacțiilor.
Rezumat
- Controlul concurenței este procedura în Baze de date pentru gestionarea operațiunilor simultane fără a intra în conflict între ele.
- Actualizările pierdute, citirea murdară, citirea nerepetabilă și problema de rezumat incorectă sunt probleme cu care se confruntă din cauza lipsei de control al concurenței.
- Pe baza de blocare, în două faze, pe bază de marcaj de timp, pe bază de validare sunt tipuri de protocoale de gestionare a concurenței
- Blocarea poate fi Partajată (S) sau Exclusivă (X)
- Protocolul de blocare în două faze, cunoscut și sub numele de protocol 2PL necesită tranzacție, ar trebui să obțină un blocare după ce eliberează unul dintre încuietori. Are 2 faze de creștere și micșorare.
- Algoritmul bazat pe timestamp folosește un timestamp pentru a serializa execuția tranzacțiilor concurente. Protocolul folosește Ora sistemului sau Numărul logic ca un marcaj de timp.