8 sbp upravljanje transakcijama

22
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

Upload: ivica-maric

Post on 03-Dec-2015

228 views

Category:

Documents


6 download

DESCRIPTION

upravljanje transakcijama

TRANSCRIPT

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]

[email protected]

Sustavi baza podataka

Ak.god. 2014/2015. SUSTAVI BAZA PODATAKA 3

Upravljanje transakcijama

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]

[email protected]

Sustavi baza podataka