Sobes.tech
Senior

Aké typy izolácie transakcií existujú a v ktorých je možné špinavé čítanie?

sobes.tech AI

Odpoveď od AI

Typy izolácie transakcií v databázach (napríklad v štandarde SQL):

  1. Read Uncommitted — najnižšia úroveň izolácie. Umožňuje špinavé čítanie (dirty read), keď transakcia číta údaje, ktoré boli zmenené, ale ešte nie sú potvrdené inou transakciou.
  2. Read Committed — zakazuje špinavé čítanie, ale umožňuje nevratné čítanie (non-repeatable read) a fantómové čítanie.
  3. Repeatable Read — zakazuje špinavé čítanie a nevratné čítanie, ale umožňuje fantómové čítanie.
  4. Serializable — najvyššia úroveň izolácie, zabraňuje všetkým uvedeným anomáliám, vrátane fantómových čítaní.

Špinavé čítanie je možné iba na úrovni Read Uncommitted.

Príklad špinavého čítania:

  • Transakcia A mení údaje, ale ich necommit-uje.
  • Transakcia B číta tieto zmenené údaje.
  • Ak je transakcia A vrátená späť, údaje, ktoré prečítala transakcia B, budú nesprávne.

Väčšina systémov správy databáz, úroveň Read Uncommitted nepodporuje alebo sa štandardne nepoužíva kvôli riziku chýb.