Download - 8 SBP Upravljanje Transakcijama
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 1
Doc.dr.sc. GORAN KRALJEVIĆ
SUSTAVI BAZA PODATAKA
FAKULTET STROJARSTVA I RAĈUNARSTVA
SVEUĈILIŠTE U MOSTARU
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 2
Web:
http://www.fsr.ba/~goran
Pitanja, primjedbe, dogovor za konzultacije ...
o E-mail: [email protected]
Sustavi baza podataka
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 4
Upravljanje transakcijama
• Pod transakcijom se podrazumijeva aktivnost ili niz aktivnosti koje izvršava jedan korisnik ili aplikacijski program, a koja ĉita ili ažurira sadržaj baze podataka.
• To je logička radna jedinica baze podataka
• Transakcija se logički mora provesti kao nedjeljiva cjelina
svaka transakcija unosi promjenu u bazi
pojedinačne operacije unutar transakcije nisu bitne same za sebe
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 5
Upravljanje transakcijama
1) UPDATE racun SET saldo=saldo-500
WHERE id_racuna=1;
2) UPDATE racun SET saldo=saldo+500
WHERE id_racuna=2;
Transakcija se mora izvršiti u potpunosti (u gornjem sluĉaju obe
UPDATE naredbe) ili nikako – “SVE ili NIŠTA”
Raĉun 1 Raĉun 2
500 KM
5.000 KM 1.000 KM
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 6
Osobine transakcija
Tzv. ACID osobine transakcija:
• Atomicity – ‘sve ili ništa’ (transakcije nije moguće samo
djelomično izvršiti)
• Consistency – transakcija mora transformirati bazu iz jednog
konzistentnog stanja u drugo
• Isolation – učinak transakcije postaje vidljiv drugim transakcijama
tek nakon završetka transakcije promatrajući izvana transakcija može biti ili izvedena ili ne
• Durability – rezultat uspješno završenih (potvrđenih) transakcija
se trajno bilježi u bazu podataka i ne smije se izgubiti zbog naknadnih grešaka (čak ni u slučaju pada sustava)
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 7
Upravljanje transakcijama (ORACLE)
• 2 tipa transakcija:
o DDL – sadrži jedan DDL iskaz
o DML – sadrži jedan ili više DML iskaza
• Transakcija zapoĉinje kada je:
o DDL naredba izdana
o Pokrenut prvi DML iskaz nakon COMMIT-a
• Transakcija se može završiti na sljedeći naĉin:
o COMMIT iskazom – potvrdi sve izmjene
o ROLLBACK iskazom – poništi sve izmjene
o DDL iskazom → automatski COMMIT
o Padom sustava → automatski ROLLBACK
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 8
Upravljanje transakcijama Primjer
SELECT placa FROM djelatnik WHERE id_djelatnika=1;
UPDATE djelatnik SET placa=placa+1000 WHERE id_djelatnika=1;
COMMIT;
t1
t2
t3
t4
t5
Vrijeme Sesija 1 Sesija 2
SELECT placa FROM djelatnik WHERE id_djelatnika=1;
SELECT placa FROM djelatnik WHERE id_djelatnika=1;
2000
2000 3000
SELECT placa FROM djelatnik WHERE id_djelatnika=1;
SELECT placa FROM djelatnik WHERE id_djelatnika=1;
3000 3000
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 9
Upravljanje transakcijama Primjer
SELECT placa FROM djelatnik WHERE id_djelatnika=1;
UPDATE djelatnik SET placa=placa+1000 WHERE id_djelatnika=1;
ROLLBACK;
t1
t2
t3
t4
t5
Vrijeme Sesija 1 Sesija 2
SELECT placa FROM djelatnik WHERE id_djelatnika=1;
SELECT placa FROM djelatnik WHERE id_djelatnika=1;
2000
2000 3000
SELECT placa FROM djelatnik WHERE id_djelatnika=1;
SELECT placa FROM djelatnik WHERE id_djelatnika=1;
2000 2000
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 10
Tehnike kontrole konkurentnosti
Konzervativne (pesimistiĉne) tehnike
• uzrokuju odgađanje transakcija u slučaju da će biti u konfliktu s drugim transakcijama u budućnosti
-> Zakljuĉavanje (locking)
Optimistiĉne tehnike
• bazirane na pretpostavci da su konflikti rijetki tako da dozvoljavaju transakcijama da nastave i nesinkronizirane
• provjeravaju konflikt na kraju (kada se transakcija potvrđuje)
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 11
Zakljuĉavanje (locking)
Dijeljeno zakljuĉavanje (shared lock, read lock)
Kljuĉ za ĉitanje – npr. transakcija SQL naredbom SELECT zaključa objekt za čitanje.
Bilo koja druga transakcija taj objekt može zakljuĉati za ĉitanje, ali ga niti jedna transakcija ne može zakljuĉati za pisanje.
Ekskluzivno zakljuĉavanje (exclusive lock, write lock)
Kljuĉ za pisanje – npr. transakcija SQL naredbom (INSERT, UPDATE ili DELETE) zaključa objekt za pisanje.
Niti jedna transakcija taj objekt ne može zakljuĉati niti za ĉitanje niti za pisanje, dok ga transakcija u kojoj je izvršeno zaključavanje ne otključa.
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 12
Zakljuĉavanje (locking)
Proces1 – postavio ključ na objekt
Proces2 – pokušava postaviti ključ na isti objekt kao i Proces1
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 13
Protokol dvofaznog zakljuĉavanja
Two-phase locking protocol (2PL)
1) prije obavljanja operacije nad objektom (npr. n-torkom iz baze), transakcija mora za taj objekt zatražiti ključ
2) nakon otpuštanja ključa, transakcija ne smije više zatražiti nikakav ključ
Transakcije koje poštuju 2PL protokol imaju 2 faze:
1) fazu pribavljanja ključeva (faza rasta - growing phase)
2) fazu otpuštanja ključeva (fazu sužavanja - shrinking phase) -> COMMIT ili ROLLBACK na kraju transakcije
Zakljuĉavanje (locking)
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 14
• Svojstvo nesmetanog konkurentnog (višekorisničkog) izvođenja transakcija naziva se serijalizabilnost.
• Serijalizabilnost (serializability) redoslijeda izvršavanja transakcija je osigurana ako sve transakcije poštuju protokol dvofaznog zaključavanja (2PL).
Zakljuĉavanje (locking)
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 15
Razine izolacije (isolation levels)
• Kod zapisivanja se uvijek traži ekskluzivno zaključavanje koje se zadržava do kraja transakcije.
• Kod ĉitanja možemo imati različite načine zaključavanja:
o read uncommitted
čitanje bez zaključavanja;
o read committed
zahtijeva dijeljeno zaključavanje za sve zapise koji su dohvaćeni upitima;
otključava zapise odmah nakon što su pročitani;
o repeatable read
zahtijeva dijeljeno zaključavanje za sve zapise koji su dohvaćeni upitima;
podaci ostaju zaključani do kraja transakcije;
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 16
Granulacija zakljuĉavanja
• Granulacija je određena veličinom objekta koji se zaključava:
o n-torka, stranica (fizički blok na kojem su zapisi pohranjeni), tablica ili baza podataka.
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 17
Mrtva toĉka (deadlock)
• Mrtva toĉka (deadlock) nastaje kada dvije (ili više)
transakcija, obje (sve) čekaju da se otpusti zaključavanje koje drži druga transakcija.
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 18
Deadlock Primjer
UPDATE djelatnik SET placa=placa-500 WHERE id_djelatnika=2;
t1
t2
t3
t4
t5
Vrijeme Sesija 1 Sesija 2
UPDATE djelatnik SET placa=placa+1000 WHERE id_djelatnika=1;
UPDATE djelatnik SET placa=placa-500 WHERE id_djelatnika=2;
UPDATE djelatnik SET placa=placa+1000 WHERE id_djelatnika=1;
→ ORA-00060: deadlock detected while waiting for resource
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 19
Upravljanje transakcijama i zakljuĉavanje
• Stanje sustava prije COMMIT ili ROLLBACK naredbe:
– moguće je vratiti sustav u stanje prije izvršavanja naredbi iz transakcije
– korisnik koji radi izmjene podataka kroz transakciju može vidjeti efekte tih izmjena (npr. izvršavanjem SELECT iskaza)
– ostali korisnici ne mogu vidjeti efekte navedenih izmjena
Zakljuĉavanje:
– n-torke nad kojima se rade izmjene kroz transakciju (INSERT, UPDATE, DELETE) automatski se zaključavaju i ostali korisnici ih ne mogu mijenjati
Napomena: Npr. u Oracle sustavu implicitno zakljuĉavanje će se desiti za sve SQL iskaze osim SELECT-a
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 20
Upravljanje transakcijama i zakljuĉavanje
• Stanje sustava nakon izvršavanja COMMIT naredbe:
– izmjene podataka u bazi postaju trajne
– sustav se više ne može vratiti u stanje prije izvršavanja naredbi iz transakcije
– svi korisnici mogu vidjeti efekte izmjena učinjenih kroz transakciju
Zakljuĉavanje:
– n-torke nad kojima su vršene izmjene kroz transakciju nisu više zaključane i navedene n-torke postaju dostupne za izmjenu i drugim korisnicima
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 21
• Stanje sustava nakon izvršavanja ROLLBACK naredbe:
– izmjene podataka u bazi se poništavaju
– sustav se vraća u stanje prije izvršavanja naredbi iz transakcije
Zakljuĉavanje:
– n-torke koje su bile implicitno zaključane kroz transakciju nisu više zaključane te postaju dostupne za izmjenu i drugim korisnicima
Upravljanje transakcijama i zakljuĉavanje
Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 22
Web:
http://www.fsr.ba/~goran
Pitanja, primjedbe, dogovor za konzultacije ...
o E-mail: [email protected]
Sustavi baza podataka