Upravljanje transakcijama u DBMS-u: stanja, tipovi i ACID
⚡ Pametni sažetak
Upravljanje transakcijama baze podataka tretira jednu ili više operacija baze podataka kao jednu logičku jedinicu koja premješta bazu podataka iz jednog konzistentnog stanja u drugo. Oslanja se na ACID svojstva, definirana stanja transakcija i rasporede kako bi se održao ispravan istodobni pristup.
Što je transakcija baze podataka?
A Transakcija baze podataka je logička jedinica obrade u DBMS-u koja podrazumijeva jednu ili više operacija pristupa bazi podataka. Ukratko, transakcije baze podataka predstavljaju stvarne događaje bilo kojeg poduzeća.
Sve vrste operacija pristupa bazi podataka koje se drže između početne i završne naredbe transakcije smatraju se jednom logičkom transakcijom u DBMS-u. Tijekom transakcije baza podataka je nekonzistentna. Tek nakon što je transakcija potvrđena, stanje se mijenja iz jednog konzistentnog stanja u drugo.

Činjenice o transakcijama baze podataka
- Transakcija je programska jedinica čije izvršenje može ali ne mora promijeniti sadržaj baze podataka.
- Koncept transakcije u DBMS-u se izvodi kao jedna jedinica.
- Ako operacije baze podataka ne ažuriraju bazu podataka, već samo dohvaćaju podatke, ova vrsta transakcije naziva se transakcija samo za čitanje.
- Uspješna transakcija može promijeniti bazu podataka iz jednog KONZISTENTNOG STANJA u drugo.
- Transakcije DBMS-a moraju biti atomske, konzistentne, izolirane i trajne.
- Ako je baza podataka prije transakcije bila u nedosljednom stanju, ostala bi u nedosljednom stanju i nakon transakcije.
Zašto vam je potrebna konkurentnost u transakcijama?
Baza podataka je zajednički resurs. Koriste je mnogi korisnici i procesi istovremeno. Primjeri uključuju bankarske sustave, sustave rezervacija željeznica i avionskih karata, praćenje burze te inventuru i blagajne u supermarketima.
Neupravljanje istodobnim pristupom može stvoriti probleme kao što su:
- Kvar hardvera i pad sustava.
- Istodobno izvršavanje iste transakcije, zastoj, ili spore performanse.
Kontroliranje ovog zajedničkog pristupa je zadatak kontrola istodobnosti, koji koristi zaključavanje i vremenske oznake za sigurno ispreplitanje transakcija. Prije toga, korisno je znati kroz koja stanja transakcija prolazi.
Stanja transakcija
Dolje su navedena različita stanja koncepta transakcije u DBMS-u:
| Država | Description |
|---|---|
| Aktivno stanje | Transakcija ulazi u aktivno stanje kada započne proces izvršavanja. Tijekom ovog stanja mogu se izvoditi operacije čitanja ili pisanja. |
| Djelomično predano | Transakcija prelazi u djelomično potvrđeno stanje nakon završetka transakcije. |
| Posvećena država | Kada transakcija dostigne potvrđeno stanje, njezino izvršenje je uspješno završeno i sve njezine promjene trajno se bilježe u bazu podataka. |
| Propala država | Transakcija se smatra neuspjelom kada bilo koja od provjera ne uspije ili ako je transakcija prekinuta dok je u aktivnom stanju. |
| Raskinuto stanje | Stanje transakcije dostiže stanje završetka kada transakcija napusti sustav i ne može se ponovno pokrenuti. |
Proučimo jedan dijagram prijelaza stanja koji naglašava kako se transakcija kreće između tih različitih stanja.
- Nakon što se transakcija započne izvršavati, ona postaje aktivna. Može izdati operaciju ČITANJA ili PISANJA.
- Nakon što su operacije ČITANJA i PISANJA završene, transakcija doseže djelomično potvrđeno stanje.
- Nadalje, neki protokoli za oporavak moraju osigurati da kvar sustava neće rezultirati nemogućnošću trajnog bilježenja promjena transakcije. Ako ova provjera uspije, transakcija se potvrđuje i ulazi u potvrđeno stanje.
- Ako provjera ne uspije, transakcija prelazi u neuspješno stanje.
- Ako se transakcija prekine dok je u aktivnom stanju, prelazi u neuspješno stanje. Transakciju treba poništiti kako bi se poništio učinak njezinih operacija pisanja na bazu podataka.
- Prekinuto stanje odnosi se na transakciju koja napušta sustav.
Što su ACID svojstva?
Svojstva KISELINE koriste se za održavanje integriteta baze podataka tijekom obrade transakcija. ACID u DBMS-u je kratica za Atomičnost, Cupornost, Iutjeha, i Durabilnost.
- Atomgrad: Transakcija je jedna jedinica operacije. Ili ga izvršite u cijelosti ili ga uopće ne izvršite. Ne može biti djelomične ovrhe.
- Dosljednost: Nakon što se transakcija izvrši, trebala bi prijeći iz jednog dosljednog stanja u drugo.
- Izolacija: Transakcija bi se trebala izvršavati odvojeno od drugih transakcija. Tijekom istodobnog izvršavanja, međurezultati istovremeno izvršenih transakcija ne bi smjeli biti dostupni jedni drugima.
- Trajnost: Nakon uspješnog završetka transakcije, promjene u bazi podataka trebale bi ostati sačuvane, čak i u slučaju kvara sustava.
ACID svojstvo u DBMS-u s primjerom
U nastavku je primjer svojstva ACID u DBMS-u:
Transaction 1: Begin X=X+50, Y = Y-50 END Transaction 2: Begin X=1.1*X, Y=1.1*Y END
Transakcija 1 prenosi 50 USD s računa X na račun Y.
Transakcija 2 je kreditiranje svakog računa s plaćanjem kamata od 10%.
Ako se obje transakcije pošalju zajedno, ne postoji jamstvo da će se Transakcija 1 izvršiti prije Transakcije 2 ili obrnuto. Bez obzira na redoslijed, rezultat mora biti kao da se transakcije odvijaju serijski, jedna za drugom.
Vrste transakcija
Na temelju područja primjene:
- Nedistribuirano vs. distribuirano.
- Kompenzacijske transakcije.
- Vremenski okvir transakcije.
- Online u odnosu na serijsko.
Na temelju radnji:
- Dvostepeno.
- Ograničen.
- Model akcije.
Na temelju strukture:
- Jednostavne ili ravne transakcije: sastoje se od niza primitivnih operacija izvršenih između početne i završne operacije.
- Ugniježđene transakcije: transakcija koja sadrži druge transakcije.
- Tijek rada.
Što je raspored?
Raspored je proces stvaranja jedne grupe više paralelnih transakcija i njihovog izvršavanja jedne po jedne. Trebao bi očuvati redoslijed kojim se instrukcije pojavljuju u svakoj transakciji. Ako se dvije transakcije izvršavaju istovremeno, rezultat jedne transakcije može utjecati na izlaz druge.
Primjer
Initial Product Quantity is 10 Transaction 1: Update Product Quantity to 50 Transaction 2: Read Product Quantity
Ako se Transakcija 2 izvrši prije Transakcije 1, očitat će se zastarjeli podaci o količini proizvoda. Stoga su potrebni rasporedi.
Paralelno izvršavanje u bazi podataka je neizbježno. Ali paralelno izvršavanje je dopušteno kada postoji odnos ekvivalencije među transakcijama koje se istovremeno izvršavaju. Ta ekvivalencija je tri vrste.
Ekvivalencija rezultata: Ako dva rasporeda prikazuju isti rezultat nakon izvršenja, to se naziva raspored ekvivalentnog rezultata. Mogu ponuditi isti rezultat za neke vrijednosti i različite rezultate za drugi skup vrijednosti. Na primjer, jedna transakcija ažurira količinu proizvoda, dok druga ažurira podatke o kupcu.
Prikaži ekvivalenciju: Ekvivalencija prikaza događa se kada transakcije u oba rasporeda izvode sličnu radnju. Na primjer, jedna transakcija ubacuje detalje o proizvodu u tablicu proizvoda, dok druga transakcija ubacuje detalje o proizvodu u arhivsku tablicu. Transakcija je ista, ali su tablice različite.
Ekvivalencija sukoba: U ovom slučaju, dvije transakcije ažuriraju ili pregledavaju isti skup podataka. Postoji sukob među transakcijama jer će redoslijed izvršavanja utjecati na izlaz.
Što je serijalizabilnost?
Serijalizabilnost je proces traženja konkurentnog rasporeda čiji je izlaz jednak serijskom rasporedu gdje se transakcije izvršavaju jedna za drugom. Ovisno o vrsti rasporeda, postoje dvije vrste serijalizabilnosti:
- Serijalizabilnost konflikta.
- Prikaži serijalizabilnost.
Njih dvoje se razlikuju po tome koliko strogo procjenjuju ekvivalenciju, kao što je sažeto u nastavku.
| Aspekt | Serijalizabilnost konflikta | Prikaži serijalizabilnost |
|---|---|---|
| Temelj | Redoslijed sukobljenih operacija | Odnosi čitanja iz i konačnog pisanja |
| test | Graf prioriteta mora biti acikličan | Prikaz ekvivalentnosti serijskog rasporeda |
| Strogost | Stroži, podskup | Šire, uključuje pisanje na slijepo |
| Trošak provjere | Efikasan | Računalno teško |
Svaki raspored koji se može serijalizirati za konflikt je također serijalizirajući za pogled, ali ne i obrnuto, zbog čega je serijalizabilnost konflikta praktični test koji primjenjuje DBMS.


