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.

  • 🔁 Osnovna jedinica: Transakcija grupira povezane operacije čitanja i pisanja tako da uspiju ili ne uspiju zajedno, nikada na pola puta.
  • 🧪 Svojstva KISELINE: AtomLičnost, konzistentnost, izolacija i trajnost jamče ispravne rezultate čak i u slučaju kvara ili konkurentnosti.
  • 🚦 Stanja transakcije: Aktivna, djelomično potvrđena, potvrđena, neuspješna i prekinuta opisuju životni ciklus transakcije.
  • 👥 Zašto istodobnost: Baza podataka je dijeljena, pa se mnogo transakcija izvršava istovremeno i ne smiju međusobno oštetiti podatke.
  • 📋 Rasporedi: Raspored određuje redoslijed operacija paralelnih transakcija uz očuvanje unutarnjeg slijeda svake transakcije.
  • 🔗 Serijalizabilnost: Konkurentni raspored je ispravan kada je njegov rezultat jednak nekom serijskom izvršavanju, procijenjenom konfliktom ili ekvivalencijom prikaza.
  • ↩️ Oporavak: Neuspješna transakcija se poništava tako da njezini djelomični zapisi nikada ne dođu do potvrđene baze podataka.

Upravljanje transakcijama u DBMS-u

Š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.

Transakcija baze podataka koja se kreće između konzistentnih stanja
Transakcija baze podataka

Č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.

Dijagram prijelaza stanja za transakciju baze podataka

Proučimo jedan dijagram prijelaza stanja koji naglašava kako se transakcija kreće između tih različitih stanja.

  1. Nakon što se transakcija započne izvršavati, ona postaje aktivna. Može izdati operaciju ČITANJA ili PISANJA.
  2. Nakon što su operacije ČITANJA i PISANJA završene, transakcija doseže djelomično potvrđeno stanje.
  3. 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.
  4. Ako provjera ne uspije, transakcija prelazi u neuspješno stanje.
  5. 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.
  6. 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.

Pitanja i odgovori

Potvrdi (Commit) trajno pohranjuje promjene transakcije u bazi podataka. Poništavanje (Rollback) poništava svaku promjenu od početka transakcije, vraćajući bazu podataka u konzistentno stanje koje je postojalo prije njenog početka.

Atomičnost. Ako se pad dogodi usred izvršavanja, atomičnost osigurava da se djelomični rad odbaci, pa se transakcija tretira kao da se nikada nije ni izvršila. Trajnost zatim štiti potvrđeni rad nakon oporavka.

Umjetna inteligencija analizira čekanja zaključavanja i grafove zastoja kako bi uočila transakcije koje blokiraju druge, a zatim preporučuje razinu izolacije ili promjenu indeksa koja smanjuje sukob bez slabljenja ispravnosti.

Do određene mjere. Učenjem obrazaca zahtjeva za zaključavanje koji su prethodili prošlim zastojima, model može rano označiti rizičnu kombinaciju transakcija, omogućujući raspoređivaču da odgodi ili promijeni redoslijed prije formiranja ciklusa.

Serijski raspored izvršava jednu transakciju u potpunosti prije nego što započne sljedeća, tako da ispreplitanje ne može oštetiti podatke. Spor je, zbog čega je cilj istovremeni raspored koji se može serijalizirati prema njemu.

Sažmite ovu objavu uz: