Sobes.tech
Middle

Milyen típusú tranzakcióelzárások léteznek?

sobes.tech MI

Válasz az MI-től

A tranzakciók izolációja meghatározza, hogy egy tranzakció mennyire láthatja más párhuzamosan végrehajtott tranzakciók közbenső változásait.

Az SQL szabvány négy izolációs szintet ír le:

  1. Read Uncommitted (Nem megerősített olvasás): A legalacsonyabb szint. Egy tranzakció olvashat nem megerősített változásokat más tranzakcióktól (szennyezett olvasás).
  2. Read Committed (Megerősített olvasás): A tranzakció csak azokat az adatokat olvashatja, amelyeket más tranzakciók megerősítettek. Elkerüli a "szennyezett" olvasást.
  3. Repeatable Read (Ismételhető olvasás): A tranzakció garantálja, hogy az olvasott adatok nem változnak meg a tranzakció során. Elkerüli a "szennyezett" és a "nem ismételhető" olvasást. "Fantomok" fordulhatnak elő.
  4. Serializable (Szekvenciális): A legmagasabb izolációs szint. Biztosítja, hogy a párhuzamos tranzakciók úgy fussanak, mintha egymás után hajtódnának végre. Elkerüli az összes nem kívánt jelenséget: "szennyezett" olvasás, "nem ismételhető" olvasás és "fantomok".

Nem kívánt jelenségek párhuzamos tranzakciók végrehajtásakor:

  • Dirty Read (Szennyezett olvasás): Az A tranzakció olvas olyan adatokat, amelyeket a B tranzakció módosított, de még nem erősítette meg. Ha a B tranzakció visszavonja a változtatásokat, az A rossz adatokkal dolgozik.
  • Non-repeatable Read (Nem ismételhető olvasás): Az A tranzakció ugyanazokat az adatokat olvassa kétszer, de a két olvasás között a B tranzakció megerősít egy változást. Ennek eredményeként az A különböző értékeket kap.
  • Phantom Read (Fantom olvasás): Az A tranzakció egy lekérdezést hajt végre, amely egy sorokat tartalmazó halmazt ad vissza. A B tranzakció megerősíti sorok beszúrását vagy törlését, amelyek megfelelnek az A lekérdezés kritériumainak. Ismételt végrehajtáskor az A más halmazt kap.

Az izolációs szintek szerinti összefoglaló táblázat:

Izolációs szint Szennyezett olvasás Nem ismételhető olvasás Fantomok
Read Uncommitted Igen Igen Igen
Read Committed Nem Igen Igen
Repeatable Read Nem Nem Igen
Serializable Nem Nem Nem

Az izolációs szint kiválasztása befolyásolja az alkalmazás teljesítményét és helyességét. Minél magasabb az izoláció szintje, annál nagyobbak a többletköltségek.