Sobes.tech
Middle

Aké úrovne izolácie transakcií existujú v SQL?

sobes.tech AI

Odpoveď od AI

Úrovne izolácie transakcií v SQL určujú stupeň ochrany dát pred paralelnými transakciami. Ovplyvňujú možné problémy: špinavé čítanie, nevratné čítanie a fantómové čítanie.

Štandard SQL definuje štyri úrovne izolácie:

  1. Read Uncommitted: Najnižšia úroveň. Transakcia môže čítať neoverené (špinavé) údaje iných transakcií.

    • Umožňuje: špinavé čítanie, nevratné čítanie, fantómové čítanie.
  2. Read Committed: Transakcia môže čítať iba overené údaje. Nie je problém s špinavým čítaním.

    • Umožňuje: nevratné čítanie, fantómové čítanie.
  3. Repeatable Read: Transakcia garantuje, že pri opakovanom čítaní uvidí rovnaké údaje. Dáta načítané v rámci transakcie nemôžu byť zmenené alebo vymazané inou transakciou do jej ukončenia.

    • Umožňuje: fantómové čítanie.
  4. Serializable: Najvyššia úroveň. Transakcie sa vykonávajú sekvenčne, akoby pracovali jedna za druhou. Úplne zabraňuje všetkým vyššie uvedeným problémom.

Tabuľka zhrnutia problémov a úrovní izolácie:

Problém Read Uncommitted Read Committed Repeatable Read Serializable
Špinavé čítanie Možné Nemožné Nemožné Nemožné
Nevratné čítanie Možné Možné Nemožné Nemožné
Fantómové čítanie Možné Možné Možné Nemožné

Výber úrovne izolácie závisí od požiadaviek aplikácie na konzistenciu dát a výkon. Vyššie úrovne zabezpečujú väčšiu integritu, ale môžu znižovať výkon kvôli zvýšenému blokovaniu. Predvolená úroveň často závisí od systému správy databáz (napríklad v PostgreSQL a Oracle je to Read Committed, v MySQL je to Repeatable Read).