Sobes.tech
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.
  • 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