Manager blocare
În informatică , managerul blocării sau managerul blocării, este un modul al SGBD care se ocupă cu gestionarea blocării .
În majoritatea sistemelor reale, Lock Manager extinde managerul de tranzacții .
Mod operativ
Când o cerere de citire sau scriere ajunge la managerul de tranzacții, acesta din urmă trimite o cerere de blocare adecvată către managerul de blocare.
După ce blocarea a fost atribuită, managerul de tranzacții înaintează solicitarea către managerul de date .
Cereri
Managerul de blocare răspunde la solicitările de următorul tip:
- Blocare (transaction_id, data_item, mode)
- Deblocare (transaction_id, data_item)
În acest fel, ID-ul tranzacției solicitante, datele care trebuie blocate și modul de blocare sunt salvate pentru fiecare blocare.
Mod de blocare
Există două modalități principale de blocare a datelor:
- Partajat (S-lock), folosit pentru citirea datelor
- Exclusiv (X-lock), folosit pentru a scrie date
Având în vedere aceste două moduri de blocare putem crea o matrice de compatibilitate de execuție.
În tabelul următor vedem când există un conflict sau o compatibilitate a operațiilor:
X-Lock | S-Lock | |
---|---|---|
X-Lock | Conflict | Conflict |
S-Lock | Conflict | Compatibil |
Masa de blocare
Managerul de blocare gestionează un tabel de blocare creat printr-o tehnică hash cu datele ca cheie, pentru a accelera căutarea. Fiecare intrare din tabel corespunde unei date. Intrarea conține un pointer către lista de blocări atribuite pentru aceleași date și un pointer către lista de cereri în așteptare pentru acele date. Pentru a facilita eliberarea blocărilor, toate intrările referitoare la aceeași tranzacție sunt legate între ele. Granularitatea blocării poate fi mai degrabă o înregistrare a bazei de date decât o pagină. În acest caz, administratorul tamponului nu va furniza o copie privată a paginii tranzacțiilor, dar va garanta accesul exclusiv prin semafor la copia unică a paginii prezente în pool-ul de tampoane.
Operațiune
Achiziționarea încuietorilor
Pentru a garanta atomicitatea operațiunilor de blocare și deblocare, tabelul de blocare este împărțit în porțiuni reglementate de semafore .
Dacă o cerere de blocare poate fi satisfăcută, o nouă intrare este introdusă în tabelul de blocare; în caz contrar, cererea este pusă în coadă.
Eliberarea încuietorilor
Există două tipuri de moduri de eliberare a blocării:
- Eliberare imediată
- Eliberare întârziată
În primul caz, deblocarea se efectuează imediat după executarea operațiunii corespunzătoare, pentru a crește nivelul concurenței sistemului.
În al doilea caz, deblocarea este amânată până la sfârșitul tranzacției, reducând nivelul concurenței în fața unui nivel mai ridicat de izolare.
Bibliografie
- Paolo Ciaccia, Dario Mario, Lecții în baze de date, 2013, Editrice Esculapio, ISBN 978-8874887187