Sobes.tech
Middle

Milyen tranzakció elszigeteltségi szintek léteznek SQL-ben?

sobes.tech MI

Válasz az MI-től

Az SQL-ben a tranzakciók izolációs szintjei meghatározzák, hogy mennyire védettek az adatok a párhuzamos tranzakciókkal szemben. Ezek befolyásolják a lehetséges problémákat: piszkos olvasás, nem ismételhető olvasás és fantom olvasás.

Az SQL szabvány négy izolációs szintet határoz meg:

  1. Read Uncommitted: A legalacsonyabb szint. Egy tranzakció olvashat nem megerősített (piszkos) adatokat más tranzakcióktól.

    • Engedélyezett: piszkos olvasás, nem ismételhető olvasás, fantom olvasás.
  2. Read Committed: A tranzakció csak megerősített adatokat olvashat. Nincs piszkos olvasási probléma.

    • Engedélyezett: nem ismételhető olvasás, fantom olvasás.
  3. Repeatable Read: A tranzakció garantálja, hogy ugyanazokat az adatokat látja ismételt olvasáskor. A tranzakció során olvasott adatok nem módosíthatók vagy törölhetők más tranzakció által a tranzakció befejezéséig.

    • Engedélyezett: fantom olvasás.
  4. Serializable: A legmagasabb szint. A tranzakciók szekvenciálisan futnak, mintha egymás után dolgoznának. Teljesen megelőzi az összes fent említett problémát.

Összefoglaló táblázat a problémákról és az izolációs szintekről:

Probléma Read Uncommitted Read Committed Repeatable Read Serializable
Piszkos olvasás Lehetséges Nem lehetséges Nem lehetséges Nem lehetséges
Nem ismételhető olvasás Lehetséges Lehetséges Nem lehetséges Nem lehetséges
Fantom olvasás Lehetséges Lehetséges Lehetséges Nem lehetséges

A kiválasztott izolációs szint az alkalmazás adatkonzisztenciára és teljesítményére vonatkozó követelményeitől függ. Magasabb szintek nagyobb integritást biztosítanak, de a zárolások növekedése miatt csökkenthetik a teljesítményt. Az alapértelmezett szint gyakran a használt adatbázis-kezelő rendszertől függ (pl. PostgreSQL és Oracle esetén alapértelmezett a Read Committed, MySQL esetén a Repeatable Read).