Ce este controlul concurenței?
Controlul concurenței în sistemul de gestionare a bazelor de date este o procedură de gestionare a operațiunilor simultane fără a intra în conflict unul cu celălalt. Se asigură că tranzacțiile bazei de date sunt efectuate simultan și precis pentru a produce rezultate corecte fără a încălca integritatea datelor din baza de date respectivă.
Accesul simultan este destul de ușor dacă toți utilizatorii citesc doar date. Nu există nicio modalitate de a se interfera unul cu celălalt. Deși pentru orice bază de date practică, aceasta ar avea un amestec de operații CITIȚI și SCRIVE și, prin urmare, concurența este o provocare.
Controlul concurenței SGBD este utilizat pentru a rezolva astfel de conflicte, care apar mai ales cu un sistem multi-utilizator. Prin urmare, Controlul concurenței este cel mai important element pentru buna funcționare a unui sistem de gestionare a 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.
În acest tutorial, veți învăța
- Ce este controlul concurenței?
- Probleme potențiale ale concurenței
- De ce să folosiți metoda Concurenței?
- Protocoale de control al concurenței
- Protocoale bazate pe blocare
- Protocolul de blocare în două faze (2PL)
- Protocoale bazate pe marcaj de timp
- Protocol bazat pe validare
- Caracteristicile protocolului de concurență bună
Probleme potențiale ale concurenței
Iată câteva probleme cu care vă veți confrunta probabil în timp ce utilizați metoda SGBD Control simultan:
- Actualizările pierdute apar atunci când mai multe tranzacții selectează același rând și actualizează rândul pe baza valorii selectate
- Probleme de dependență neacceptate apar atunci când a doua tranzacție selectează un rând care este actualizat de o altă tranzacție ( citire murdară )
- Citirea 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ă.
- Problema Rezumat incorect apare atunci când o tranzacție preia rezumatul asupra valorii tuturor instanțelor unui articol de date repetat și a doua tranzacție actualizează câteva instanțe ale respectivului element de date. În această situație, rezumatul rezultat nu reflectă un rezultat corect.
De ce să folosiți metoda Concurenței?
Motivele utilizării metodei de control al concurenței sunt SGBD:
- Pentru a aplica izolarea prin excludere reciprocă între tranzacții conflictuale
- Pentru a rezolva problemele conflictelor de citire-scriere și scriere-scriere
- Pentru a păstra consistența bazei de date prin păstrarea constantă a obstacolelor de execuție
- Sistemul trebuie să controleze interacțiunea dintre tranzacțiile concurente. Acest control se realizează folosind scheme de control simultan.
- Controlul concurenței ajută la asigurarea serializabilității
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 același timp de spectacol.
Cu toate acestea, rămâne un singur loc pentru spectacolul de film din acel teatru. Fără control simultan în SGBD, este posibil ca ambii cinefil să ajungă să cumpere un bilet. Cu toate acestea, metoda de control al concurenței nu permite acest lucru. Ambii cinefil pot accesa în continuare informațiile scrise în baza de date a locurilor filmelor. 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
Diferite protocoale de control al concurenței oferă avantaje 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 SGBD:
- Protocoale bazate pe blocare
- Protocol de blocare în două faze
- Protocoale bazate pe marcaj de timp
- Protocoale bazate pe validare
Protocoale bazate pe blocare
Protocoalele bazate pe blocare în SGBD sunt un mecanism în care o tranzacție nu poate citi sau scrie datele până când nu dobândește o blocare adecvată. Protocoalele bazate pe blocare ajută la eliminarea problemei concurenței din SGBD pentru tranzacții simultane prin blocarea sau izolarea unei anumite tranzacții la un singur utilizator.
O blocare este o variabilă de date care este asociată cu un element de date. Această blocare înseamnă că operațiile care pot fi efectuate asupra elementului de date. Blocările din SGBD ajută la sincronizarea accesului la elementele bazei de date prin tranzacții simultane.
Toate cererile de blocare sunt adresate managerului de control al concurenței. Tranzacțiile se desfășoară numai după acordarea cererii de blocare.
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ă blocările din SGBD în funcție de utilizările lor. Dacă se obține o blocare pe un element de date pentru a efectua o operație de scriere, aceasta se numește blocare exclusivă.
1. Blocare partajată (S):
O blocare comună este numită și blocare numai în 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 articolul de date.
De exemplu, luați în considerare un caz în care două tranzacții citesc soldul contului unei persoane. Baza de date le va permite să citească plasând o blocare 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 termină.
2. Blocare exclusivă (X):
Cu Blocarea exclusivă, un articol de date poate fi citit și scris. Aceasta este exclusivă și nu poate fi păstrată simultan pe același element de date. X-lock este solicitat folosind instrucțiunile lock-x. Tranzacțiile pot debloca articolul de date după terminarea operației de „scriere”.
De exemplu, atunci când o tranzacție trebuie să actualizeze soldul contului unei persoane. Puteți permite această tranzacție plasând blocarea X 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 operațiunea. Tranzacțiile pot debloca articolul de date după terminarea operației de „scriere”.
4. Blocare de pretindere
Protocolul de blocare pre-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 blocările se eliberează când toate operațiunile sale sunt terminate.
Foame
Înfometarea este situația în care o tranzacție trebuie să aștepte o perioadă nedeterminată pentru a obține o blocare.
Următoarele sunt motivele înfometării:
- Atunci când schema de așteptare pentru articolele blocate nu este gestionată corect
- În cazul scurgerii de resurse
- Aceeași tranzacție este selectată ca victimă în mod repetat
Impas
Blocajul se referă la o situație specifică în care două sau mai multe procese așteaptă reciproc să elibereze o resursă sau mai mult de două procese așteaptă resursa într-un lanț circular.
Protocol de blocare în două faze
Protocolul de blocare în două faze , cunoscut și sub numele de protocol 2PL, este o metodă de control al concurenței în SGBD care asigură serializabilitatea prin aplicarea unei blocări la datele tranzacției care blochează alte tranzacții pentru a accesa simultan aceleași date. Protocolul de blocare în două faze ajută la eliminarea problemei concurenței din SGBD.
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 blocările. Când o tranzacție eliberează prima blocare, începe a treia fază.
- În această a treia fază, tranzacția nu poate solicita nicio blocare nouă. În schimb, eliberează numai încuietorile achiziționate.
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 creștere : în această fază tranzacția poate obține blocaje, dar nu poate elibera niciun blocaj.
- Faza de reducere : În această fază, o tranzacție poate elibera blocaje, dar nu poate obține o blocare nouă
Este adevărat că protocolul 2PL oferă serializabilitate. Cu toate acestea, nu se asigură că blocajele nu se întâmplă.
În diagrama dată mai sus, puteți vedea că detectoarele de blocaj local și global caută blocaje și le rezolvă cu reluarea tranzacțiilor către stările lor inițiale.
Metodă strictă de blocare în două faze
Sistemul de blocare Strict-Two fază este aproape similar cu 2PL. Singura diferență este că Strict-2PL nu eliberează niciodată o blocare după ce a folosit-o. Păstrează toate blocările până la punctul de comitere și eliberează toate blocările dintr-o singură dată când procesul este terminat.
2PL centralizat
În Centralized 2 PL, un singur site este responsabil pentru procesul de gestionare a blocării. Are un singur manager de blocare pentru întregul SGBD.
Copia principală 2PL
Mecanismul principal de copiere 2PL, mulți manageri de blocare sunt distribuiți la diferite site-uri. După aceea, un anumit manager de blocare este responsabil pentru gestionarea blocării pentru un set de articole de date. Când copia primară a fost actualizată, modificarea se propagă către sclavi.
Distribuit 2PL
În acest tip de mecanism de blocare în două faze, administratorii de blocare sunt distribuiți la toate site-urile. Aceștia sunt responsabili de gestionarea blocărilor pentru datele de pe acel site. Dacă nu sunt reproduse date, acestea sunt echivalente cu copia primară 2PL. Costurile de comunicare ale 2PL distribuite sunt destul de mari decât copia primară 2PL
Protocoale bazate pe marcaj de timp
Protocolul bazat pe marcaj de timp în SGBD este un algoritm care folosește sistemul de timp sau contor logic ca marcaj de timp pentru a serializa execuția tranzacțiilor concurente. Protocolul bazat pe Timestamp asigură că fiecare operațiune de citire și scriere conflictuală este executată într-o ordine de timestamp.
Tranzacția mai veche are întotdeauna prioritate în această metodă. Acesta folosește ora sistemului pentru a determina marca temporală a tranzacției. Acesta este cel mai frecvent utilizat protocol de concurență.
Protocoalele bazate pe blocare vă ajută să gestionați ordinea dintre tranzacțiile aflate în conflict când vor fi executate. Protocoalele bazate pe timestamp 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 0010T2 has entered the system at 0020T3 has entered the system at 0030Priority 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 blocării!
Dezavantaje:
Înfometarea este posibilă dacă aceeași tranzacție este repornită și întreruptă continuu
Protocol bazat pe validare
Protocolul bazat pe validare în SGBD, cunoscut și sub denumirea de Tehnică optimistă de control 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 executării tranzacției.
Protocolul bazat pe validare se realizează în următoarele trei etape:
- Citește Faza
- Faza de validare
- Scrie Faza
Citește Faza
În faza de citire, valorile datelor din baza de date pot fi citite de o tranzacție, dar operația de scriere sau actualizările sunt aplicate numai copiilor de date locale, nu bazei de date reale.
Faza de validare
În faza de validare, datele sunt verificate pentru a se asigura că nu există nicio încălcare a serializabilității în timpul aplicării actualizărilor tranzacției la baza de date.
Scrie Faza
Î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 ideal de control al concurenței SGBD are următoarele obiective:
- Trebuie să fie rezistent la eșecurile site-ului și la comunicare.
- Permite executarea paralelă a tranzacțiilor pentru a atinge concurența maximă.
- Mecanismele sale de stocare și metodele de calcul ar trebui să fie modeste pentru a minimiza cheltuielile generale.
- Trebuie să impună anumite constrângeri asupra structurii acțiunilor atomice ale tranzacțiilor.
rezumat
- Controlul concurenței este procedura din SGBD pentru gestionarea operațiunilor simultane fără a intra în conflict unul cu celălalt.
- Actualizările pierdute, citirea murdară, citirea nerepetabilă și problema incorectă a rezumatului sunt probleme cu care se confruntă din cauza lipsei controlului concurenței.
- Bazat pe blocare, în două faze, bazat pe ștampilă, bazat pe validare sunt tipuri de protocoale de gestionare a concurenței
- Blocarea poate fi Shared (S) sau Exclusive (X)
- Protocolul de blocare în două faze, cunoscut și sub numele de protocol 2PL, are nevoie de o tranzacție care ar trebui să obțină o blocare după ce eliberează una dintre blocările sale. Are 2 faze de creștere și micșorare.
- Algoritmul bazat pe timestamp utilizează un timestamp pentru a serializa execuția tranzacțiilor concurente. Protocolul folosește Timpul sistemului sau Numărul logic ca marcaj de timp.