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:
- 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).
- 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.
- 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ő.
- 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.