Tranzakció tulajdonságai
Tranzakciók, gyakran ismertek a kifejezéssel SAV, négy fő általános tulajdonsággal rendelkezik.
- Atomos állapot: Ez garantálja, hogy a munkaegységen belüli összes feladat sikeresen befejeződik; máskülönben, éppen a meghibásodás pillanatában, a folyamat leáll, és a korábbi folyamatok visszaállnak régi állapotukba.
- Következetesség: Ez azt jelenti, hogy egy kellően elkötelezett folyamat után az adatbázis megfelelően frissül.
- Elkülönítés: Segíti a tranzakciókat abban, hogy egymással, egyénileg és átláthatóan működjenek.
- Tartósság: Ez biztosítja, hogy a rendszer meghibásodása esetén az elkötelezett ügylet eredménye vagy következménye megmaradjon.
A MySQL tranzakciók működése:
A MySQL-en belül a két kifejezés, a Commit és a Rollback elsősorban csak a MySQL tranzakciókhoz használatos. A tranzakciók csak a BEGIN WORK nyilatkozattal kezdődnek, és vagy COMMIT, vagy ROLLBACK nyilatkozattal fejeződnek be. Az SQL utasítások tartalmazzák a tranzakció nagy részét mind a kezdő, mind a leállító utasítások között. Az ilyen eseménysorok a használt programozási nyelvtől függetlenek. Megtalál egy megfelelő utat, bármilyen nyelven is használja az alkalmazás felépítését. Az alábbi SQL utasítások a mysql query () szolgáltatás segítségével valósíthatók meg.
- KEZDŐDIK: Indítsa el a folyamatot vagy a tranzakciót a BEGIN WORK SQL utasítás megadásával.
- SQL COMMAND hozzáadása: egy vagy akár több SQL utasítás, például SELECT, INSERT, UPDATE és DELETE. Akkor is erősítse meg, ha nincs hiba, és minden megfelel az Ön elvárásainak.
- ELKÖVETNI: A COMMIT utasítást a sikeres tranzakció elvégzése után kell előírni, hogy az összes társított táblázat módosítása teljes mértékben érvényesülhessen.
- VISSZATÉRÉS: Meghibásodás esetén valóban célszerű ROLLBACK utasítást küldeni a tranzakcióban megadott egyes táblák korábbi állapotának visszaállításához.
- AUTOCOMMIT: Alapértelmezés szerint a MySQL a módosításokat véglegesen alkalmazza egy adatbázisra. Ha az AUTOCOMMIT értéke 1 (normál), akkor minden SQL lekérdezést (függetlenül attól, hogy tranzakcióban van-e vagy sem) feltételezzük, hogy befejezett tranzakció, és mindaddig elkötelezett, amíg alapértelmezés szerint be nem fejeződik. Az automatikus végrehajtás elkerülése érdekében állítsa az AUTOCOMMIT értéket 0-ra.
01. példa: AutoCommit mód be:
A MySQL alapértelmezés szerint engedélyezett Autocommit fázissal működik. Biztosítja, hogy a MySQL elmentse a változtatásokat a lemezen, hogy állandóan létrehozhassa őket, mindaddig, amíg egy táblázatot módosító (módosító) lekérdezést futtatunk. Nem szükséges visszafordítani a lépést. Próbáljuk meg az AUTOCOMMIT on módban. Nyissa meg a MySQL parancssori héját, és a kezdéshez írja be a jelszavát.
Vegyünk egy példát egy "könyv" táblára, amelyet egy adatbázis "adat" -ben hoztak létre. Jelenleg még nem hajtottunk végre rajta lekérdezést.
>> SELECT * FROM adatok.könyv;
2. lépés: Ez a folyamat a "book" tábla frissítésére szolgál. Frissítsük a „Szerző” oszlop értékét, ahol a könyv neve „Főoldal”. Láthatja, hogy a változtatásokat sikeresen végrehajtották.
>> UPDATE adatok.könyv SET Szerző = 'Cristian Steward' WHERE Név = 'Otthon';
A frissített táblázat bepillantásával módosított értéket kapunk a szerzőről, ahol a "név" "Otthon".
>> SELECT * FROM adatok.könyv;
Használjuk a ROLLBACK parancsot a változtatások visszaállításához az alábbi lekérdezés egyszerű hozzáadásával. Láthatja, hogy a ROLLBACK lekérdezés itt nem működik, mivel azt mutatja, hogy '0 sor érintett'.
>> ROLLBACK;
Még az asztalt is láthatja. A táblázat a ROLLBACK utasítás eddigi végrehajtása után nem változott. Ez azt jelenti, hogy a ROLLBACK nem működik, ha alapértelmezés szerint be van kapcsolva az AUTOCOMMIT.
>> SELECT * FROM adatok.könyv;
02. példa: AutoCommit mód ki:
A végrehajtott változtatások visszaállításához próbáljuk meg az AUTOCOMMIT kikapcsolt módot. A „book” táblázat ugyanazon példáján keresztül végrehajtunk néhány változtatást rajta. A TRANZAKCIÓ INDÍTÁSA deklarációval kikapcsoljuk az automatikus véglegesítési fázist, vagy egyszerűen írja be az alábbi parancsot az AUTOCOMMIT kikapcsolásához.
>> AUTOCOMMIT BEÁLLÍTÁSA = 0;Tegyük fel, hogy adatbázisunkban ugyanaz a „könyv” tábla van, és változtatnunk kell rajta. Ezután állítsa vissza ezeket a változásokat a régiekre.
>> SELECT * FROM adatok.könyv;
Ha még nem kapcsolta ki az AUTOCOMMIT módot, akkor kezdje el a TRANZAKCIÓ INDÍTÁSA lekérdezést a parancssori shellben az alábbiak szerint.
>> TRANZAKCIÓ INDÍTÁSA;
Frissíteni fogjuk ugyanazt a táblázatot az UPDATE paranccsal azáltal, hogy az „Author” beállítást „Aliana” -nak állítjuk be, ahol a könyv neve „Dream”. Tegye meg az alábbi paranccsal. Látni fogja, hogy a változtatásokat sikeresen és hatékonyan hajtják végre.
>> UPDATE adatok.könyv SET Autho = 'Aliana' WHERE név = 'Álom';
Ellenőrizzük, hogy a fenti lekérdezés tökéletesen működött-e és módosította-e a táblázatot. A frissített táblázatot az alábbi SELECT paranccsal ellenőrizheti, mint mindig.
>> SELECT * FROM adatok.könyv;Láthatja, hogy a lekérdezés kiválóan működött, amint az alább látható.
Most a ROLLBACK parancson van a feladat végrehajtása. Próbálja meg a parancssorban található ROLLBACK parancsot a táblázat legújabb frissítésének visszagörgetéséhez.
>> ROLLBACK;
Ellenőrizzük, hogy a ROLLBACK lekérdezés megfelelően működött-e vagy sem. Ehhez újra ellenőriznie kell a "könyv" táblázatot a "SELECT" paranccsal, mint mindig.
>> SELECT * FROM adatok.könyv;Az alábbi kimenetből láthatja, hogy a ROLLBACK végre működött. Visszaállította az UPDATE lekérdezés által a táblázatban végrehajtott módosításokat.
Következtetés:
Ez minden a MySQL tranzakcióknál. Remélem, hogy ez az útmutató segít a MySQL tranzakciók kényelmes végrehajtásában.