A kiválasztott változat és az aktuális verzió közötti különbségek a következők.
Előző változat mindkét oldalon Előző változat Következő változat | Előző változat | ||
oktatas:adatbazis-kezeles:tranzakcio [2021/10/11 23:07] admin [Teszttábla létrehozása] |
oktatas:adatbazis-kezeles:tranzakcio [2021/10/11 23:25] (aktuális) admin [Tranzakció] |
||
---|---|---|---|
Sor 4: | Sor 4: | ||
* **Szerző:** Sallai András | * **Szerző:** Sallai András | ||
- | * Copyright (c) Sallai András, 2014 | + | * Copyright (c) Sallai András, 2014, 2021 |
* Licenc: GNU Free Documentation License 1.3 | * Licenc: GNU Free Documentation License 1.3 | ||
- | * Web: http://szit.hu | + | * Web: https://szit.hu |
===== Fogalom ===== | ===== Fogalom ===== | ||
Sor 377: | Sor 377: | ||
==== Read Uncommitted ==== | ==== Read Uncommitted ==== | ||
- | Elindítunk egy tranzakciót, de a befejezés előtt várunk 20 másodpercet. | + | |
+ | Indítsunk egy terminálban egy kapcsolatot: | ||
<code mysql> | <code mysql> | ||
- | start TRANSACTION; | + | start transaction; |
- | UPDATE tabla1 SET mezo1 = 2; | + | update dolgozok set fizetes=2000; |
- | select sleep(20); | + | |
- | ROLLBACK; | + | |
</code> | </code> | ||
- | A set transaction utasítás egy select erejéig beállítja a read uncommitted izolációs szintet. | + | |
+ | Egy másik terminálban, vizsgáljuk meg milyen izolációs szint van beállítva a munkameneten: | ||
<code mysql> | <code mysql> | ||
- | SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; | + | select @@tx_isolation; |
- | SELECT * FROM tabla1; | + | |
</code> | </code> | ||
- | ==== Read Committed ==== | + | Kérdezzük le a tran adatbázis dolgozók táblájának tartalmát: |
+ | <code mysql> | ||
+ | select * from dolgozok; | ||
+ | </code> | ||
+ | |||
+ | |||
+ | Állítsuk be a **read uncommitted** izolációs szintet a munkamenetre: | ||
- | Elindítunk egy tranzakciót, de a befejezés előtt várunk 20 másodpercet. | ||
<code mysql> | <code mysql> | ||
- | start TRANSACTION; | + | set session transaction isolation level read uncommitted; |
- | UPDATE tabla1 SET mezo1 = 2; | + | |
- | select sleep(20); | + | |
- | ROLLBACK; | + | |
</code> | </code> | ||
- | A set transaction utasítás egy select erejéig beállítja a read uncommitted izolációs szintet. | + | Most kérdezzük le újból: |
<code mysql> | <code mysql> | ||
- | SET TRANSACTION ISOLATION LEVEL READ COMMITTED; | + | select * from dolgozok; |
- | SELECT * FROM tabla1; | + | |
</code> | </code> | ||
+ | |||
+ | Az első lekérdezésnél, ha az izolációs szint **repeatable read** volt, | ||
+ | az update eredménye még nem látszik. A második lekérdezésnél, azonban | ||
+ | meg kell jelenjen az első terminálon beállított új érték. A | ||
+ | **read uncommitted** izolációs szint működik. | ||
+ | |||
+ | |||
+ | |||
+ | |||