Middle
Ce tipuri de blocări există în SQL?
sobes.tech AI
Răspuns de la AI
Tipuri de blocări în SQL:
-
Pe nivel:
- Blocarea tabelului (Table Locks): Blochează întregul tabel. Ușor de implementat, dar poate reduce semnificativ paralelismul. Potrivit pentru operațiuni care modifică întregul tabel (de exemplu,
ALTER TABLE). - Blocarea rândurilor (Row Locks): Blochează rânduri individuale. Asigură un paralelism ridicat, dar necesită mai multe resurse pentru gestionare. Folosit implicit în majoritatea SGBD-urilor pentru
INSERT,UPDATE,DELETE.
- Blocarea tabelului (Table Locks): Blochează întregul tabel. Ușor de implementat, dar poate reduce semnificativ paralelismul. Potrivit pentru operațiuni care modifică întregul tabel (de exemplu,
-
După tipul de acces:
- Blocare partajată (Shared Lock - S Lock): Permite mai multor tranzacții să citească date simultan, dar interzice scrierea de către altele.
- Blocare exclusivă (Exclusive Lock - X Lock): Permite doar unei singure tranzacții să acceseze datele (citire și scriere) și blochează pe celelalte.
- Blocare de intenție (Intention Lock): Indică SGBD-ului că tranzacțiile intenționează să stabilească o blocare la un nivel inferior (rânduri sau tabele). De exemplu,
IS(Intention Shared),IX(Intention Exclusive). Ajută SGBD-ul să verifice mai rapid compatibilitatea blocărilor.
-
Alte tipuri:
- Blocare de interval (Range Lock): Blochează un interval de rânduri într-un index. Folosit pentru a preveni citirile fantomă.
- Blocare de metadate (Metadata Lock): Blochează metadatele obiectului (tabel, vizualizare etc.). Folosit la operațiuni DDL.
Compatibilitatea blocărilor determină dacă mai multe tranzacții pot menține în același timp anumite tipuri de blocări pe același obiect.
| Tip de blocare | S | X | IS | IX |
|---|---|---|---|---|
| S | Da | Nu | Da | Nu |
| X | Nu | Nu | Nu | Nu |
| IS | Da | Nu | Da | Da |
| IX | Nu | Nu | Da | Da |