Uvod v Transakcije v SQL
Transakcija v SQL, splošno znana kot plačevanje (pošiljanje, prejemanje, nakup itd.), Vendar ko gre za tehnična področja, je to način posodobitve logične enote informacij v bazi podatkov.
Transakcija je izvedba ene ali več sprememb v bazi podatkov. Lahko združimo več poizvedb SQL in se hkrati izvajajo v transakciji. Vsa poizvedba SQL bi bila bodisi izvedena naenkrat, bodisi bi se vsa vrnila nazaj. Uspeh ali neuspeh bi imel le dva rezultata.
Transakcija, ki je enkrat storjena, ne more biti povratna, vrniti jo je mogoče le, če transakcija ni zavezana. MYSQL samodejno prevzame spremembe v bazi, če se vse poizvedbe uspešno izvedejo. Če želite izrecno zavezati spremembe v bazi, najprej onemogočite samodejno zavezo s pomočjo ukaza -
Sintaksa: SET autocommit = 0;
Lastnosti transakcije
Sledijo pomembne lastnosti transakcij, vsaka transakcija mora slediti tem lastnostim
1. Atomicnost
Transakcija mora biti atomska, za določeno logično enoto je treba zaključiti povprečno obdelavo podatkov. Ta lastnost zagotavlja, da se spremembe podatkov izvedejo popolnoma drugače, če se transakcija vrne.
2. Doslednost
Ko se transakcija zaključi, bodo vsi razpoložljivi zapisi dosledni v celotni transakciji. Ta lastnost zagotavlja, da je stanje preklopilo lastnost baz podatkov po uspešni potrditvi ali ne.
3. Izolacija
Izolacija se nanaša na spremembe podatkov na določeni logični enoti, ki ne smejo vplivati na drugo enoto. Omogoča samostojno izvedbo transakcije.
4. Trajnost
Spremembe med transakcijami bi morale biti v sistemu stalne. V primeru sistemske napake ta lastnost tudi zagotavlja, da se spremembe podatkov zgodijo ali ne.
Zgoraj navedena lastnost transakcije je znana tudi kot lastnost ACID.
Koraki transakcije
1. Začnite
Transakcija se lahko zgodi v več izvedbah SQL, vendar bi se vsi SQL morali izvajati hkrati. Če katera od transakcij ne uspe, se celotna transakcija razveljavi. Izjava za začetek transakcije je "START TRANSACTION". Začne kratica za START TRANSACTION.
Sintaksa: ZAČETNA TRANSAKCIJA;
2. Zavezo
Odbori trajno odražajo spremembe v bazi. Izjava za začetek posla je „COMMIT“.
Sintaksa: COMMIT;
3. Odvračanje
Povračilo sprememb se uporablja za povrnitev sprememb, tj. Zapis se ne bo spremenil, bil bi v prejšnjem stanju. Izjava za začetek transakcije je "ROLLBACK".
Sintaksa: ROLLBACK;
4. Savepoint
SAVEPOINT je tudi izpisek o transakciji. Ta izjava je bila uporabljena za ustvarjanje shranjevalne točke v sistemu, tako da lahko operacija ROLLBACK doseže stanje shranjevalne točke.
5. Sprostite Savepoint
RELEASE SAVEPOINT je izjava, da sprostite shranjevalno točko in pomnilnik, ki ga sistem porabi pri ustvarjanju točke shranjevanja.
Sintaksa: SPROSTITE SAVEPOINT SP
Opombe - SP je ime varčevalne točke, ko je bila ta varčevalna točka ustvarjena pred začetkom transakcije.
6. Nastavite Transaction
Ukaz SET TRANSACTION se uporablja za določitev atributa transakcije, na primer, da je določena transakcija seja samo za branje ali branje in pisanje.
Sintaksa : SET TRANSACTION (PREBERI-PISI | PREBERI SAMO);
Transakcija se uporablja za izvajanje zapletenih sprememb v bazi podatkov. Večinoma se uporablja pri informacijah, povezanih z bančništvom, v relacijske baze podatkov.
Transakcijo podpira mehanizem MYSQL InnoDB. Samodejno prevzemanje privzeto ostane omogočeno, zato se vsakič, ko se kateri koli SQL izvrši po izvršitvi, samodejno izvede.
Transakcije z uporabo SQL
Primer # 1
Bančna transakcija: račun z bremena 50000 zneska od osebe Varčevalni račun in ta znesek predložen na posojilni račun A.
Začni transakcijo: Ta začetna transakcija bo pretvorila vse poizvedbe SQL v eno enoto transakcije.
UPDATE `account` SET `balance` = `balance` - 50000 WHERE user_id = 7387438;
Ta poizvedba SQL odšteje znesek iz obstoječega stanja na računu.
UPDATE `loan_account` SET `paid_amount` = `paid_amount` + 50000 WHERE user_id = 7387438;
Ta poizvedba SQL doda znesek na račun uporabniškega posojila.
Insert into `transaction_details`(`user_id`, 'amount') values (7387438, '50000');
Ta poizvedba SQL vstavi nov zapis v tabelo s podrobnostmi o transakcijah, ta tabela vsebuje podrobnosti o vseh transakcijah uporabnikov. Če so vse poizvedbe uspešno izvedene, je treba uvesti COMMIT ukaz, saj je treba spremembe trajno shraniti v bazo podatkov.
Zavezi: Ta izjava o zavezi shrani spremembe, ki jih pri transakciji v bazo podatkov prikličejo. Če katera od transakcij med izvedbo ne uspe, je treba za povrnitev celotne transakcije izvesti ukaz ROLLBACK
Odvrnitev: Povračilo se zgodi, ko kakšna poizvedba med izvedbo ne uspe.
Primer # 2
Transakcija zalog: V dani tabeli izdelkov je na voljo 6 postavk.
Izvedite naslednji stavek START TRANSACTION za začetek transakcije.
Zdaj zaženite ukaz SET AUTOCOMMIT = 0 ; da onemogočite samodejno zavezo
Zdaj izvedite naslednji stavek, da odstranite zapis iz tabele elementov
Zdaj razpoložljivi zapis v tabeli je 4, tj. Zapisi so začasno odstranjeni iz elementov tabele
Zdaj izvedite ukaz ROLLBACK za razveljavitev sprememb, izbrisani zapis bi bil na voljo v elementih tabele, kot je bilo prej, preden začnete transakcijo
Znova, če uporabite isto operacijo brisanja, potem se postopek COMMIT, ko se spremeni, trajno shrani v bazo podatkov
Zdaj lahko vidimo, da je bil po ukazu ROLLBACK zapis še vedno v novem stanju. To pomeni, da, ko operacija COMMIT izvede spremembe, ni mogoče povrniti, ker trajno spreminja v bazo podatkov;
Prednosti uporabe Transaction v SQL
a) Uporaba Transaction izboljša uspešnost , če bi bil vstavljen 1000 zapisov s transakcijami, v tem primeru bi bil čas manjši od običajnega vstavljanja. Kot pri običajni transakciji, bi se vsakič, ko bi se COMMIT zgodil po vsaki izvedbi poizvedbe, povečal čas izvedbe vsakič, ko v transakciji ni treba izvajati stavka COMMIT po vsaki poizvedbi SQL. COMMIT na koncu bi vse spremembe podatkovne baze trajno odražale hkrati. Tudi če uporabljate transakcijo, bi bilo vračilo sprememb veliko lažje kot običajna transakcija. ROLLBACK bo povrnil vse spremembe naenkrat in ohranil sistem v prejšnjem stanju.
b) Transakcija zagotavlja celovitost podatkov v relacijski podatkovni bazi. Večina baz podatkov uporablja več tabel za vzdrževanje podatkov in med posodabljanjem se lahko takrat spremenijo več tabel, če katera koli poizvedba SQL ne bo uspela, bi transakcija ohranila podatke nespremenjene.
Zaključek
Uporaba Transakcij je najboljša praksa pri posodabljanju informacij za logično enoto v relacijski podatkovni bazi. Za izvedbo transakcij bi moral motor podatkovne baze podpirati transakcijo, kot je motor InnoDB. Transakcijo kot enoto stavkov SQL je mogoče naenkrat razveljaviti z enim stavkom ROLLBACK. Transakcija zagotavlja celovitost podatkov in izboljšuje delovanje baze podatkov.
Priporočeni članki
To je vodnik za Transakcije v SQL. Tukaj razpravljamo o uvodu, lastnostih, korakih, primerih transakcij v SQL, skupaj s prednostmi uporabe transakcij v SQL.
- Kaj je SQL
- Orodja za upravljanje SQL
- Pogledi SQL
- Vrste združitev v SQL Server
- Prvih 6 vrst združitev v MySQL s primeri