Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 3

Naredbe Commit i rollback

Dvije osnovne operacije koje koristi transakcija su read(X) i write(X). Operacijom read(X) čita
se element X iz baze podataka i upisuje u promjenljivu X programa. Operacijom write (X)
upisuje se promenljiva X programa kao element X baze podataka. To može biti neko polje
određenog sloga iz baze podataka ali takođe i neki veći element - cio slog ili čitav blok sa diska.

Izvođenje read(X) operacije obuhvata sledeće korake:


1. Nalaženje bloka na disku koji sadrži element X.
2. Učitavanje nađenog bloka sa diska u radni bafer (koji se nalazi u glavnoj memoriji) ukoliko se
traženi blok ne nalazi u baferu.
3. Kopiranje elementa X iz bafera u radno područje aplikacije koja je lansirala operaciju read(X).

Izvođenje write(X) operacije obuhvata sledeće:


1. Nalaženje bloka na disku koji sadrži element X.
2. Učitavanje nađenog bloka sa diska u radni bafer (koji se nalazi u glavnoj memoriji) ukoliko se
traženi blok ne nalazi u baferu.
3. Kopiranje elementa X iz aplikacije u radni bafer.
4. Upis ažuriranog bloka iz radnog bafera na disk odmah ili odloženo. Ovim korakom upravlja
operativni sistem ili menadžer oporavka.

Ostale operacije transakcije: Za potrebe oporavka sistem mora čuvati podatke o tome kada
transakcija startuje, kada se završava i kada se komituje. Menadžer oporavka čuva podatke o
sledećim operacijama:
1. begin_transaction: markira početak izvođenja transakcije;
2. read i write : označava da su u transakciji izvedene operacije čitanja i upisa elemenata
iz baze podataka;
3. end_transaction: označava da su završene read i write operacije iz transakcije i markira
krajnju granicu izvršenja transakcije. U ovoj tački je neophodna provjera da li su promjene u bazi
podataka trajno izvedene (tj. da li je transakcija komitovana) ili je izvedeno abortovanje
transakcije iz nekih razloga;
4. commit_transaction: daje informaciju da je transakcija uspješno izvedena tako da su
promjene izvršene u okviru transakcije sigurno komitovane u bazu podataka i da neće biti
poništene.
Osim ovih operacija oporavak baze podataka zahtjeva i sledeće operacije:
5. rollback (abort): signalizira da je transakcija završena neuspješno tako da treba ponoviti sve
operacije ažuriranja koje su ovom transakcijom obuhvaćene;
6. undo: slična je operaciji rollback osim što se primjenjuje na jednu operaciju, a ne na čitavu
transakciju;
7. redo: ukazuje da određene operacije transakcije treba ponovo izvesti da bi osigurali
uspješnost izvođenja svih operacija komitovane transakcije nad bazom podataka.

Dijagram promjene stanja transakcije pri njenom izvođenju: Osnovna stanja transakcije su:
ACTIVNA, DJELIMIČNO_KOMITOVANA, KOMITOVANA, NEISPRAVNA,
TERMINIRANA. Niže je prikazan dijagram promjene stanja transakcije.
end_transaction DJELOMIČNO
KOMITOVANA
read, write KOMITOVANA komitovanje
A
AKTIVNA

NEISPRAVNA TERMINIRANA

Transakcija ulazi u stanje AKTIVNA kada se startuje izvođenje transakcije. U aktivnom


stanju mogu se izvoditi operacije read i write. Kada se transakcija završi, prelazi u djelimično
komitovano stanje. U ovoj tački neke tehnike za upravljanje konkurencijom zahtjevaju da se
izvedu neke provjere (engl. check) kako nebi došlo do interferencije transakcija. Neki protokoli
oporavka obezbjeđuju da neispravnost sistema ne dovodi do nemogućnosti da se permanentno
zabiljeleže promjene transakcije. Promjene se obično bilježe u sistemski dnevnik. Ako ove
provjere prođu bez problema, transakcija dolazi do tačke komitovanja i ulazi u stanje
KOMITOVANA. Kada transakcija dodje u ovo stanje može se smatrati da je uspješno izvedena.
Ako je neka provjera neuspješna, transakcija prelazi u stanje NESPRAVNA. U to stanje
transakcija dolazi i u slučaju njenog abortovanja iz stanja AKTIVNA. Ova transakcija se može
vratiti unazad da bi se poništile operacije write nad bazom podataka. Kada transakcija napušta
sistem ona prelazi u stanje TERMINIRANA. Neispravne transakcije se kasnije mogu ponovo
startovati ili automatski ili nakon ponovnog lansiranja.

Tačke komitovanja transakcije


Transakcija T dolazi do svoje tačke komitovanja kada se uspješno izvrše sve operacije te
transakcije za pristup bazi podataka i kada je uticaj svih tih operacija na bazu podataka zapisan u
dnevniku. Iza ove tačke za transakciju se kaže da je komitovana i u dnevniku se zapisuje slog
commit,TC. Ako se desi neka greška u sistemu, vraćamo se unazad kroz dnevnik za sve
transakcije T za koje postoji slog start,TC, a ne postoji slog commit,TC. U procesu oporavka
sve ove transakcije se moraju vratiti unazad (engl. rollback) i njihov uticaj na bazu podataka se
mora poništiti (engl. undo). Za transakcije za koje postoji commit slog u dnevniku u procesu
oporavka moraju se ponovo uraditi (engl. redo) sve write operacije. Dnevnik se pamti na disku u
odgovarajućem fajlu. Ažuriranje tog fajla zahtjeva sledeće operacije:
1. Kopiranje odgovarajućeg bloka fajla sa diska u bafer u glavnoj memoriji;
2. Ažuriranje bafera u glavnoj memoriji;
3. Kopiranje bafera nazad iz glavne memorije na disk.
Obično se u baferu drži jedan blok dnevnika sve dok se napuni podacima o transakciji, a zatim se
zapisuje nazad na disk. Na ovaj način se štedi sistemsko vreme. Kada dođe do kraha sistema, tada
se u procesu oporavka baze podataka koriste samo oni podaci iz dnevnika koji su zapisani na
disku, jer podaci iz bafera u glavnoj memoriji mogu biti izgubljeni. Stoga, prije nego što
transakcija dostigne svoju tačku komitovanja, dio dnevnika koji nije zapisan na disku mora tada
biti zapisan na disku. To je tzv. Prisilno zapisivanje dnevnika prije komitovanja transakcije.
U sistemski dnevnik se unose kontrolne tačke checkpointC kad god se u bazu podataka zapiše
efekat svih write operacija komitovane transakcije.
ACID svojstva transakcije
Poželjna svojstva transakcije su:
1. Atomičnost (engl. atomicity). Transakcija je atomska jedinica obrade što znači da se
mora izvršiti u cjelini. Za očuvanje atomičnosti transakcije zadužen je menadžer oporavka. U
slučaju kraha sistema menadžer oporavka mora obezbediti poništavanje uticaja transakcije na
bazu podataka
2. Konzistentnost (engl. consistency). Korektno izvodjenje svake transakcije treba da prevede
bazu podataka iz jednog konzistentnog stanja u drugo. Za očuvanje ovog svojstva odgovoran je
programer aplikacije nad bazom podataka.
3. Izolovanost (engl isolation). Sve promjene koje nad bazom podataka čini jedna transakcija su
nevidljive za ostale transakcije sve dok ih transakcija ne komituje. Ako se ovo ograničenje strogo
poštuje, rješava se problem privremenog ažuriranja, tj. Nije neophodno kaskadno vraćanje
transakcije unazad. Različite metode konkurencije i oporavka uvode različite varijante ovog
ograničenja.
4. Postojanost (engl. durability). Sve promene koje transakcija učini nad bazom podataka, nakon
komitovanja nesmiju biti izgubljene.

You might also like