predavanje 5-b2

17
1 ZA ZA Š Š TITA BAZE TITA BAZE PODATAKA PODATAKA Kontrola paralelnog pristupa Kontrola paralelnog pristupa Kontrola paralelnog pristupa Kontrola paralelnog pristupa u vi u viš ekorisni ekorisnič kom radu vi kom radu viš e programa mo e programa mož e e istovremeno pristupiti istim podacima istovremeno pristupiti istim podacima potrebno je sprije potrebno je spriječ iti da: iti da: dva ili vi dva ili viš e korisnika programa istovremeno e korisnika programa istovremeno mijenjaju isti podatak mijenjaju isti podatak neki programi pregledavaju podatak dok ga neki neki programi pregledavaju podatak dok ga neki drugi program mijenja drugi program mijenja

Upload: marko-pavlovic

Post on 19-Jan-2016

18 views

Category:

Documents


6 download

DESCRIPTION

java predavanje

TRANSCRIPT

Page 1: predavanje 5-B2

1

ZAZAŠŠTITA BAZE TITA BAZE PODATAKAPODATAKA

Kontrola paralelnog pristupaKontrola paralelnog pristupa

Kontrola paralelnog pristupaKontrola paralelnog pristupa

•• u viu viššekorisniekorisniččkom radu vikom radu višše programa moe programa možže e

istovremeno pristupiti istim podacimaistovremeno pristupiti istim podacima

•• potrebno je sprijepotrebno je spriječčiti da:iti da:

–– dva ili vidva ili višše korisnika programa istovremeno e korisnika programa istovremeno

mijenjaju isti podatakmijenjaju isti podatak

–– neki programi pregledavaju podatak dok ga neki neki programi pregledavaju podatak dok ga neki

drugi program mijenjadrugi program mijenja

Page 2: predavanje 5-B2

2

Kontrola paralelnog pristupaKontrola paralelnog pristupa

Transakcija T1 vrijeme Transakcija T2

AŽURIRANJE P1 t1 ------

-----

t2

SELECT P1

ROLLBACK

t3

Kontrola paralelnog pristupaKontrola paralelnog pristupa

T1 vrijeme T2 dohvat P1 t1 ----

---- t2 dohvat P1 ažuriranje P1 t3 -----

COMMIT t4 ažuriranje P1 t5 COMMIT

Page 3: predavanje 5-B2

3

Problemi paralelnog pristupaProblemi paralelnog pristupa

•• izgubljeni ili uniizgubljeni ili uniššteni podaci teni podaci –– javlja se kad 2 ili vijavlja se kad 2 ili višše transakcija u isto vrijeme ae transakcija u isto vrijeme ažžuriraju istu uriraju istu

nn--torkutorku, ali na osnovi originalne n, ali na osnovi originalne n--torketorke →→ zadnja azadnja ažžurirana urirana nn--torkatorka se samo pojavljuje kao nova nse samo pojavljuje kao nova n--torkatorka dok se ostale dok se ostale promjene gubepromjene gube

npr.npr.

Avionske karte za let 345 se prodaju na 2 mjesta, preko mreAvionske karte za let 345 se prodaju na 2 mjesta, preko mrežže. Joe. Jošš su su ostale 3 karte. Na oba mjesta prodavaostale 3 karte. Na oba mjesta prodavačči u isto vrijeme dobiju i u isto vrijeme dobiju narunaružždbudbu za za tri odnosno dvije karte. Oba vide da jotri odnosno dvije karte. Oba vide da jošš ima 3 karte i oba prodaju ima 3 karte i oba prodaju narunaruččene karte, iako ne postoji 5 karata. Onaj koji je prodao 2 karteene karte, iako ne postoji 5 karata. Onaj koji je prodao 2 karte je je zadnji promijenio podatke i ostaje jozadnji promijenio podatke i ostaje jošš jedna karta, a zapravo fale 2 karte. jedna karta, a zapravo fale 2 karte.

Problem se moProblem se možže rijee riješšiti tako da prvo jedan prodavaiti tako da prvo jedan prodavačč prodaproda karte a zatim karte a zatim i drugi, na osnovu novih podataka dobivenih od prvog prodavai drugi, na osnovu novih podataka dobivenih od prvog prodavačča(0 karata a(0 karata ostalo).ostalo).

•• nekonzistentni podaci (nekonzistentni podaci (nonrepeatablenonrepeatable readread) )

–– jedna transakcija mijenja njedna transakcija mijenja n--torkutorku a druga transakcija a druga transakcija

ččita tu nita tu n--torkutorku, i to tako da svaki put pro, i to tako da svaki put proččita ita

drugadrugaččije podatke ije podatke

npr.npr.

Jedan administrator Jedan administrator ččita podatke dva puta a izmeñu ta dva ita podatke dva puta a izmeñu ta dva

puta drugi administrator mijenja podatke puta drugi administrator mijenja podatke →→ prvi prvi

administrator proadministrator proččita razliita različčite podatke, koji bi trebali biti isti. ite podatke, koji bi trebali biti isti.

Problem se moProblem se možže rijee riješšiti tako da prvi administrator moiti tako da prvi administrator možže e

ččitati podatke samo nakon itati podatke samo nakon ššto drugi promijeni to drugi promijeni podatke u podatke u

bazi.bazi.

Page 4: predavanje 5-B2

4

•• ““prljavo prljavo ččitanjeitanje”” ((dirtydirty readread))

–– jedna transakcija mijenja podatke dok druga jedna transakcija mijenja podatke dok druga ččita te ita te

iste podatke iste podatke

–– prva transakcija moprva transakcija možže ponovo promijeniti podatke i e ponovo promijeniti podatke i

uopuopćće ne poslati trenutno izmijenjene (doe ne poslati trenutno izmijenjene (doššlo lo dodo

pogrepogrešške kod upisa) ke kod upisa) →→ druga transakcija je prodruga transakcija je proččitala itala

podatke koji uoppodatke koji uopćće nisu niti postojali u bazie nisu niti postojali u bazi

–– RjeRješšenje:enje: Dok jedna transakcija Dok jedna transakcija transakcijatransakcija mijenja mijenja

podatke, u trenutku mijenjanja, druge transakcije ne podatke, u trenutku mijenjanja, druge transakcije ne

smiju smiju ččitati te podatke sve dok ta transakcija ne itati te podatke sve dok ta transakcija ne

potvrdi promjenu potvrdi promjenu

•• ““fantomskefantomske”” nn--torketorke (p(phantomhantom rreadseads))

–– pojavljuju se kada neka transakcija upisuje ili bripojavljuju se kada neka transakcija upisuje ili brišše ne n--

torketorke dok ih druga transakcija za to vrijeme dok ih druga transakcija za to vrijeme ččitaita

–– transakcija koja transakcija koja ččita podatke proita podatke proččita i one nita i one n--torketorke

koje prva transakcija upravo brikoje prva transakcija upravo briššee

–– ako u trenutku pregleda tablice jedne transakcije ako u trenutku pregleda tablice jedne transakcije

druga transakcija unosi podatke, prva druga transakcija unosi podatke, prva neneććee ““vidjetividjeti””

nn--torketorke koje jokoje jošš ne postoje u bazi podataka ne postoje u bazi podataka

–– RjeRješšenjeenje: niti jedna : niti jedna transacijatransacija ne smije unositi nove ne smije unositi nove

podatke u bazu dok ostale transakcije nisu zavrpodatke u bazu dok ostale transakcije nisu završšile ile

raditi s raditi s originalnomoriginalnom bazom podatakabazom podataka

Page 5: predavanje 5-B2

5

ZakljuZaključčavanjeavanje

•• transakcija motransakcija možže zakljue zaključčati podatke ati podatke ččime ime

sprijespriječčavaava druge transakcije da pristupe podatku druge transakcije da pristupe podatku

dok ga dotidok ga dotiččna transakcija ne otkljuna transakcija ne otključčaa

•• podaci koji su se mijenjali tijekom transakcije podaci koji su se mijenjali tijekom transakcije

ostaju zakljuostaju zaključčani do kraja transakcijeani do kraja transakcije

•• lockinglocking managermanager zakljuzaključčava zapise i presuñuje u ava zapise i presuñuje u

slusluččajevima kad postoji viajevima kad postoji višše zahtjeva e zahtjeva zaza

zakljuzaključčavanje istog podatka avanje istog podatka

•• SUBP treba u SUBP treba u ššto veto veććoj mjeri omoguoj mjeri omoguććiti iti

paralelno izvoñenjeparalelno izvoñenje

•• efekt transakcija koje se obavljaju paralelno efekt transakcija koje se obavljaju paralelno

mora biti isti kao da su se obavljale jedna iza mora biti isti kao da su se obavljale jedna iza

druge (druge (serijalizacijaserijalizacija))

•• ako se zakljuako se zaključča previa previšše objekata drugi procesi e objekata drugi procesi

bespotrebno bespotrebno ččekaju na otkljuekaju na otključčavanje avanje →→

smanjuje se konkurentnost, usporava se radsmanjuje se konkurentnost, usporava se rad

•• ako se ne postave svi potrebni kljuako se ne postave svi potrebni ključčevi moguevi mogućća a

je pojava nekonzistentnih podatakaje pojava nekonzistentnih podataka

Page 6: predavanje 5-B2

6

Nepotpuni zastojNepotpuni zastoj

Transakcija 1Transakcija 1 TransakcijaTransakcija 22 TransakcijaTransakcija 33

zakljuzaključčaj Aaj A …… ……

…… zakljuzaključčaj Aaj A ……

otkljuotključčaj Aaj A zakljuzaključčaj Aaj A

……

•• transakcija 2 motransakcija 2 možže e ččekati zauvijek, iako je imala ekati zauvijek, iako je imala

priliku zakljupriliku zaključčati podatak Aati podatak A

•• rjerješšenjeenje: : ““firstfirst comecome firstfirst servedserved””

Potpuni zastojPotpuni zastoj

•• svaki proces svaki proces ččeka od drugog da ovaj otpusti eka od drugog da ovaj otpusti

kljuključč

•• oba procesa ne mogu nioba procesa ne mogu niššta raditi, ne mota raditi, ne možže se e se

napraviti niti napraviti niti rollbackrollback niti zavrniti završšiti transakciju iti transakciju

Page 7: predavanje 5-B2

7

Transakcija 1Transakcija 1 TransakcijaTransakcija 22

zakljuzaključčaj Aaj A zakljuzaključčajaj BB

zakljuzaključčaj Baj B zakljuzaključčajaj AA

•• preporuka:preporuka:

–– transakcija zatratransakcija zatražži odjednom sve kljui odjednom sve ključčeve eve –– zakljuzaključča a sve ili nisve ili nišštata

–– zahtjeva se da transakcije zakljuzahtjeva se da transakcije zaključčavaju podatke u avaju podatke u nekom odreñenom poretkunekom odreñenom poretku

•• ako se dogodi:ako se dogodi:

–– javlja se grejavlja se grešška 1205;ka 1205;

–– barem jedna transakcija se mora prekinuti; barem jedna transakcija se mora prekinuti; poniponišštavaju se svi njeni efekti tavaju se svi njeni efekti

Protokol dvofaznog zakljuProtokol dvofaznog zaključčavanjaavanja

•• serijalizacijaserijalizacija je moguje mogućća ako sve transakcije a ako sve transakcije popošštuju protokol:tuju protokol:

–– faza rasta ili faza pribavljanja kljufaza rasta ili faza pribavljanja ključčaa•• prije obavljanja operacije nad objektom transakcija mora prije obavljanja operacije nad objektom transakcija mora

za taj objekt zatraza taj objekt zatražžiti kljuiti ključč

–– faza sufaza sužžavanja ili faza otpuavanja ili faza otpušštanja kljutanja ključčevaeva•• nakon otpunakon otpušštanja kljutanja ključča transakcija ne smije via transakcija ne smije višše zatrae zatražžiti iti

nikakav kljunikakav ključč

•• najnajččeeššćće je to samo jedna operacija (COMMIT ili e je to samo jedna operacija (COMMIT ili ROLLBACK)ROLLBACK)

Page 8: predavanje 5-B2

8

RjeRješšavanje problema paralelnog avanje problema paralelnog pristupapristupa

•• postoji automatsko zakljupostoji automatsko zaključčavanje, a samim time i avanje, a samim time i

rjerješšavanje problema ali korisnik moavanje problema ali korisnik možže sam e sam

definirati kakvo definirati kakvo ćće se zakljue se zaključčavanje postaviti u avanje postaviti u

bazi:bazi:

–– postavljanjem odreñene granulacije postavljanjem odreñene granulacije

–– postavljanjem odreñene vrste zakljupostavljanjem odreñene vrste zaključčavanjaavanja

–– postavljanjem izolacijskog nivoa postavljanjem izolacijskog nivoa

–– postavljanjem vremenski ogranipostavljanjem vremenski ograniččenih zakljuenih zaključčavanjaavanja

Granulacija zakljuGranulacija zaključčavanjaavanja

•• odreñuje se veliodreñuje se veliččina objekta koji ina objekta koji ćće biti zakljue biti zaključčanan

–– baza podatakabaza podataka –– DATABASEDATABASE

•• kada se treba zakljukada se treba zaključčati veliki broj nati veliki broj n--torkitorki u vrlo velikom u vrlo velikom broju relacija broju relacija

–– tablicatablica –– TABLETABLE

•• zakljuzaključčava se cijela tablica, ukljuava se cijela tablica, uključčujuujućći sve podatke i sve i sve podatke i sve indekseindekse

–– redak redak –– RIDRID•• rowrow IDID

•• ako se zakljuako se zaključčava ograniava ograniččen broj nen broj n--torkitorki (redaka)(redaka)

Page 9: predavanje 5-B2

9

–– memorijska stranicamemorijska stranica –– PAGEPAGE

•• ako se zakljuako se zaključčava ograniava ograniččen broj nen broj n--torkitorki za koje se moza koje se možže e

pretpostaviti da su smjepretpostaviti da su smješštene na fizitene na fiziččki bliskim pozicijamaki bliskim pozicijama

•• veliveliččina: 8KB stranica s podacima ili indeksimaina: 8KB stranica s podacima ili indeksima

–– EXTENTEXTENT

•• grupa od 8 memorijskih stranicagrupa od 8 memorijskih stranica

–– indeks indeks –– KEYKEY

•• npr. za npr. za ččuvanje uvanje ““mjestamjesta”” za kljuza ključč ččiji je zapis obrisan; u iji je zapis obrisan; u

slusluččaju poniaju ponišštavanja transakcijetavanja transakcije

•• koristi se implicitno od strane SUBPkoristi se implicitno od strane SUBP

Vrste zakljuVrste zaključčavanjaavanja

1.1. kljuključč za za ččitanje itanje –– SSHARED (S) HARED (S) LLOCKOCK

•• transakcija T zakljutransakcija T zaključča objekt za a objekt za ččitanjeitanje

•• bilo koja druga transakcija ga takoñer bilo koja druga transakcija ga takoñer momožžeezakljuzaključčati ati zaza ččitanjeitanje

•• niti jedna druga transakcija ga niti jedna druga transakcija ga ne mone možže zakljue zaključčati ati zazapisanjepisanje

•• odmah nakon odmah nakon ššto je podatak, zakljuto je podatak, zaključčan an zaza ččitanje, itanje, proproččitan kljuitan ključč za za ččitanje se otpuitanje se otpuššta ta

•• trajnost kljutrajnost ključča ovisi o a ovisi o primjenjenomprimjenjenom nivou izolacije nivou izolacije →→na zakljuna zaključčavanje avanje zaza ččitanje itanje utjeutječče nivo izolacijee nivo izolacije

Page 10: predavanje 5-B2

10

2.2. kljuključč za pisanje/izmjenu za pisanje/izmjenu –– EXCLUSIVE (X) EXCLUSIVE (X) LOCKLOCK

•• transakcija T zakljutransakcija T zaključča objekt za pisanjea objekt za pisanje

•• niti jedna druga transakcija ga niti jedna druga transakcija ga ne mone možžee zakljuzaključčati dok ga T ati dok ga T ne otkljune otključčaa

•• svaka operacija izmjene postavlja kljusvaka operacija izmjene postavlja ključč za pisanje!!!za pisanje!!!•• postavlja se postavlja se neovisnoneovisno o postavljenom nivou izolacijeo postavljenom nivou izolacije

•• uklanja se tek po zavruklanja se tek po završšetku transakcijeetku transakcije

•• da ne bi doda ne bi doššlo lo dodo postavljanja prevelikog broja kljupostavljanja prevelikog broja ključčeva za eva za pisanje/izmjenu ne treba koristiti pisanje/izmjenu ne treba koristiti prefinuprefinu granulaciju granulaciju zakljuzaključčavanjaavanja

•• treba koristiti treba koristiti ššto krato kraćće transakcije da bi se sprijee transakcije da bi se spriječčilo ilo nepotrebno ograninepotrebno ograniččavanje konkurentnosti avanje konkurentnosti

•• naredbe: UPDATE, INSERT, DELETEnaredbe: UPDATE, INSERT, DELETE

3.3. unaprediviunapredivi kljuključč –– UPDATE (U) LOCKUPDATE (U) LOCK

•• aažžuriranje prouriranje proččitane nitane n--torketorke postavlja ovaj kljupostavlja ovaj ključč

•• izraizražžava namjeru izmjene ava namjeru izmjene

•• na pona poččetku se postavlja kljuetku se postavlja ključč za za ččitanjeitanje•• bilo koja druga transakcija bilo koja druga transakcija momožže postaviti kljue postaviti ključč za za

ččitanjeitanje•• niti jedna druga transakcija niti jedna druga transakcija ne mone možže postaviti kljue postaviti ključč za za

pisanjepisanje

•• prije izmjene kljuprije izmjene ključč se se unaprijeñujeunaprijeñuje u kljuu ključč za za pisanjepisanje

•• omoguomoguććuje SUBPuje SUBP--u da predviña buduu da predviña budućće akcijee akcije

•• ovisi o nivou izolacije; postavlja se ovisi o nivou izolacije; postavlja se ččak i kad je nivo ak i kad je nivo izolacije izolacije UNCOMMITTEDUNCOMMITTED

Page 11: predavanje 5-B2

11

Razina izolacijeRazina izolacije

•• odreñuje naodreñuje naččin pristupa podacima u viin pristupa podacima u viššekorisniekorisniččkom kom okruokružženjuenju

•• izolira pojedine transakcije jedne od drugihizolira pojedine transakcije jedne od drugih

•• ninižži nivo izolacije i nivo izolacije –– povepoveććava konkurentnost ava konkurentnost

–– smanjuje ispravnost podataka smanjuje ispravnost podataka

•• povipoviššenjem nivoa izolacije enjem nivoa izolacije –– osigurava se ispravnost podatakaosigurava se ispravnost podataka

–– smanjuje se mogusmanjuje se moguććnost nost šštetne interferencije paralelno tetne interferencije paralelno izvoñenih programaizvoñenih programa

–– smanjuje se konkurentnostsmanjuje se konkurentnost

SET TRANSACTION ISOLATION LEVEL SET TRANSACTION ISOLATION LEVEL { READ COMMITTED { READ COMMITTED

| READ UNCOMMITTED | READ UNCOMMITTED | REPEATABLE READ | REPEATABLE READ | SERIALIZABLE | SERIALIZABLE

}}

•• samo jedna od opcija mosamo jedna od opcija možže biti postavljenae biti postavljena

Page 12: predavanje 5-B2

12

1.1. prljavo prljavo ččitanje itanje –– READ UNCOMMITTEDREAD UNCOMMITTED•• najninajnižži nivo izolacije i nivo izolacije

•• mogumogućće proe proččitati itati ““prljaveprljave”” ili nepotvrñene n ili nepotvrñene n--torketorke

•• osigurava samo da se ne mogu osigurava samo da se ne mogu ččitati fiziitati fiziččki ki ooššteteććeni podaci eni podaci

•• ččitaju se svi traitaju se svi tražženi podaci eni podaci bez zakljubez zaključčavanjaavanja i i bez provjere da li su mobez provjere da li su možžda zakljuda zaključčani ani →→ pojava pojava sablasnih nsablasnih n--torkitorki

•• operacije aoperacije ažžuriranja uriranja zakljuzaključčavajuavaju podatke podatke prilikom izmjena prilikom izmjena

•• koristi se u slukoristi se u sluččajevima:ajevima:•• kad se pristupa kad se pristupa ““statistatiččkimkim”” podacimapodacima

•• kad samo jedan program koristi bazu podatakakad samo jedan program koristi bazu podataka

•• kad se ne zahtijeva apsolutna kad se ne zahtijeva apsolutna preiznostpreiznost podatakapodataka

2.2. ččitanje potvrñenih nitanje potvrñenih n--torkitorki –– COMMITTED READCOMMITTED READ•• SQL Server default SQL Server default nivo izolacijenivo izolacije

•• ne ne ččita ita ““prljaveprljave”” nn--torketorke

•• mogu se javiti fantomske nmogu se javiti fantomske n--torketorke ili nekonzistentni podaci ili nekonzistentni podaci

•• proces koji proces koji ččita provjerava da li je trenutno traita provjerava da li je trenutno tražženi podatak eni podatak

zakljuzaključčan an zaza pisanje pisanje →→ nn--torkatorka se nese nećće moe moćći proi proččitatiitati

•• podaci se podaci se ne zakljune zaključčavajuavaju

•• ne utjene utječče na izmjene jer se svaki podatak e na izmjene jer se svaki podatak zakljuzaključčavaavaprilikom izmjenaprilikom izmjena

•• podatak koji je propodatak koji je proččitan veitan većć u sljedeu sljedeććem trenutku moem trenutku možže biti e biti

izmijenjen ili obrisanizmijenjen ili obrisan

•• koristi se samo ukoliko se nkoristi se samo ukoliko se n--torketorke koje se koje se ččitaju koriste kao itaju koriste kao

nezavisne jedinice, tj. pronezavisne jedinice, tj. proččitana vrijednost se neitana vrijednost se nećće koristiti e koristiti

kao referentna u daljnjim operacijamakao referentna u daljnjim operacijama

Page 13: predavanje 5-B2

13

3.3. mogumoguććnost ponovnog nost ponovnog ččitanja itanja ––REPEATABLE READREPEATABLE READ

•• mogu se javiti fantomske nmogu se javiti fantomske n--torketorke

•• dohvat ndohvat n--torketorke iz djelatnog skupa uzrokuje iz djelatnog skupa uzrokuje zakljuzaključčavanje avanje zaza ččitanje itanje ogovarajuogovarajuććee nn--torketorke u bazi u bazi podatakapodataka

•• dohvatom nove ndohvatom nove n--torketorke prethodna se prethodna se otkljuotključčavaava

•• ako je kod izmjene podataka (ako je kod izmjene podataka (UPDATE CURSORUPDATE CURSOR) ) na trenutnu nna trenutnu n--torkutorku postavljen postavljen unaprediviunapredivi kljuključč, , zapisi/stranice na kojima je dozapisi/stranice na kojima je doššlo lo dodo izmjena izmjena ostaju zakljuostaju zaključčane do kraja transakcijeane do kraja transakcije

•• ako se pri dohvatu ne koristi transakcija kljuako se pri dohvatu ne koristi transakcija ključč se se otpuotpuššta odmah nakon ta odmah nakon ššto je nto je n--torkatorka proproččitanaitana

•• koristi se ako je potrebno osigurati da dohvakoristi se ako je potrebno osigurati da dohvaććena ena

vrijednost ne bude promijenjena za vrijeme vrijednost ne bude promijenjena za vrijeme ““obradeobrade””

dohvadohvaććene nene n--torketorke

•• koristi se u slukoristi se u sluččajevima kada se dohvaajevima kada se dohvaććena nena n--torkatorka

koristi kao referentna vrijednost u daljnjim operacijama koristi kao referentna vrijednost u daljnjim operacijama

s podacimas podacima

Page 14: predavanje 5-B2

14

4.4. SERIALIZABLE (ISOLATED)SERIALIZABLE (ISOLATED)•• najvinajvišši nivo izolacijei nivo izolacije

•• transakcije su potpuno izolirane jedna od druge transakcije su potpuno izolirane jedna od druge

•• dohvat ndohvat n--torketorke iz djelatnog skupa uzrokuje iz djelatnog skupa uzrokuje zakljuzaključčavanje avanje zaza ččitanje itanje ogovarajuogovarajuććee nn--torketorke u bazi u bazi podatakapodataka

•• dohvatom nove ndohvatom nove n--torketorke prethodna ostaje prethodna ostaje zakljuzaključčanaana

•• kod ponovnog dohvata istog djelatnog skupa kod ponovnog dohvata istog djelatnog skupa unutar iste transakcije prethodno zakljuunutar iste transakcije prethodno zaključčane ane nn--torketorke i dalje su zakljui dalje su zaključčane ane →→ zapisi/stranice zapisi/stranice ostaju zakljuostaju zaključčane do kraja transakcijeane do kraja transakcije

•• koristi se ukoliko je potrebno osigurati da niti jedna koristi se ukoliko je potrebno osigurati da niti jedna

nn--torkatorka ne bude promijenjena do zavrne bude promijenjena do završšetka transakcijeetka transakcije

•• koristi se u slukoristi se u sluččaju da se viaju da se višše dohvae dohvaććenih nenih n--torkitorki koristi koristi

kao referentna vrijednost u daljnjim operacijama s kao referentna vrijednost u daljnjim operacijama s

podacima podacima

Page 15: predavanje 5-B2

15

Vrijeme zakljuVrijeme zaključčavanjaavanja

•• ako doñe ako doñe dodo zastoja, zastoja, SQL ServerSQL Server poniponišštava jednu od tava jednu od zablokiranih transakcija, i to onu kojoj vrijeme zablokiranih transakcija, i to onu kojoj vrijeme ččekanja nije ekanja nije odreñeno odreñeno

•• SET LOCK_TIMEOUT SET LOCK_TIMEOUT max_vrijeme_max_vrijeme_ččekanjaekanja–– naredba kojom se definira koliko je maksimalno vrijeme koje jednnaredba kojom se definira koliko je maksimalno vrijeme koje jedna a

transakcija transakcija ččeka na zakljueka na zaključčani objekt ani objekt

–– kada transakcija kada transakcija ččeka dueka dužže od ovog maksimalnog vremena automatski se e od ovog maksimalnog vremena automatski se poniponišštava i javlja se pogretava i javlja se pogrešška 1222 ka 1222 "Lock request time"Lock request time--out period out period exceeded" exceeded"

–– ako nije postavljeno, ako nije postavljeno, @@LOCK_TIMEOUT@@LOCK_TIMEOUT vravraćća a --1 1 →→ ččekaj zauvijekekaj zauvijek

•• @@LOCK_TIMEOUT@@LOCK_TIMEOUT–– funkcija koja vrafunkcija koja vraćća vrijeme a vrijeme ččekanja na objekt koji je zakljuekanja na objekt koji je zaključčanan

–– vrijeme u vrijeme u milisekundamamilisekundama

–– na pona poččetku spajanja na bazu vraetku spajanja na bazu vraćća a --11

Primjer 1:Primjer 1: nije postavljeno nije postavljeno maximalnomaximalno vrijemevrijeme

SELECT @@LOCK_TIMEOUTSELECT @@LOCK_TIMEOUT

-------------------------------- --11

Primjer 2:Primjer 2: maksimalno vrijeme postavljeno na 1800 maksimalno vrijeme postavljeno na 1800 msms

SET LOCK_TIMEOUT 1800 SET LOCK_TIMEOUT 1800

SELECT @@LOCK_TIMEOUT SELECT @@LOCK_TIMEOUT

------------------------------------------------------------ 18001800

Page 16: predavanje 5-B2

16

Transakcija 1Transakcija 1

BEGIN BEGIN

INSERT INTO osoba INSERT INTO osoba

VALUES(4, VALUES(4, ''PeroPero'', , ''PeriPerićć''))

……

ROLLBACK ROLLBACK TRANSACTIONTRANSACTION

SELECT * FROM osobaSELECT * FROM osoba

Transakcija 2Transakcija 2

SET TRANSACTION ISOLATIONSET TRANSACTION ISOLATION

LEVEL READ LEVEL READ UNUNCOMMITTEDCOMMITTED

SELECT * FROM osobaSELECT * FROM osoba

……

SELECT * FROM osobaSELECT * FROM osoba

Primjer 3.Primjer 3.

1 Ivo Ivić

2 Maro Marić

3 Ana Anić

4 Pero Perić

Primjer 4.Primjer 4.

T1T1

SET TRANSACTION ISOLATIONSET TRANSACTION ISOLATION

LEVEL LEVEL SERIALIZABILESERIALIZABILE

BEGIN BEGIN

SELECT * FROM osobaSELECT * FROM osoba

WHERE mbr=1WHERE mbr=1

……

T2T2

SET TRANSACTION ISOLATIONSET TRANSACTION ISOLATION

LEVEL LEVEL SERIALIZABILESERIALIZABILE

BEGINBEGIN

SELECT * FROM osobaSELECT * FROM osoba

WHERE mbr=1WHERE mbr=1

UPDATE osoba UPDATE osoba

SET ime= SET ime= ''IveIve''

WHERE mbr=1WHERE mbr=1

OK !OK !OK !OK !

KLJUKLJUKLJUKLJUČ !!!!

Page 17: predavanje 5-B2

17

Primjer 5.Primjer 5.

T1T1

SET TRANSACTION ISOLATIONSET TRANSACTION ISOLATION

LEVEL READ LEVEL READ UNCOMMITTEDUNCOMMITTED

BEGIN BEGIN

UPDATE osoba UPDATE osoba

SET ime= SET ime= ''IveIve''

WHERE mbr=1WHERE mbr=1

T2T2

SET TRANSACTION ISOLATIONSET TRANSACTION ISOLATION

LEVEL READ LEVEL READ COMMITTEDCOMMITTED

BEGIN BEGIN

SELECT * FROM osobaSELECT * FROM osoba

WHERE mbr=1WHERE mbr=1

ENDEND

SET TRANSACTION ISOLATIONSET TRANSACTION ISOLATION

LEVEL READ LEVEL READ UNCOMMITTEDUNCOMMITTED

BEGIN BEGIN

SELECT * FROM osobaSELECT * FROM osoba

WHERE mbr=1WHERE mbr=1

KLJUKLJUKLJUKLJUČ !!!!

OK !OK !OK !OK !