Professional Documents
Culture Documents
Konkurentni Pristup Bazi Podataka
Konkurentni Pristup Bazi Podataka
Banja Luka
Tema:
KOKURENTNI PRISTUP
BAZI PODATAKA
K
op
ir
ati
po
da
ta
k
X
iz
ba
fe
ra
u
pr
og
ra
m
sk
u
va
rij
ab
lu
sa
i
m
en
o
m
X
IZMENA PODATKA
Koraci izvršenje write_item(X):
Kopirajadresu
Nađi podatak Xuiz
disk blokdisk
programske
bafer u glavnoj varijable
bloka
na koji
korektnu
memoriji
sadrži
(akolokaciju
disk bloku
podatak
bafer
več X
nije u memoriji)
Pi
ši
bl
o
k
iz
m
e
m
or
ij
e
na
di
sk
PRIMER:
I transakcija II transakcija
Read_item(X) 70 Read_item(X) 70
X:=X-N 65 X:=X+M 78
Write_item(X) Write_item(X)
Read_item(Y) 50
Y:=Y+N 55
Write_item(Y)
READ
WRITE
POČETAK KRAJ
TRANSAKCIJE TRANSAKCIJE PARCIJALNO IZVRŠI
AKTIVNA POTVRĐENA
POTVRĐENA
PREKID PREKID
PAD
transakcije
KRAJ
Osobine transakcija
Transakcijatreba da ima nekoliko osobina, one se često
nazivaju ACID osobine i one treba da sprovode kontrolu
konkurentosti i metode oporavka u SUBP. ACID osobine:
◦ Atomicity (nedeljivost) – Transakcija je nedeljiva jedinica
procesiranja koja se ili izvrši u celosti ili se ni jedan njen dio ne
izvrši
◦ Consistency preservation (Zaštita konzistentnosti) - transakcija
štiti bazu od nekonzistentnosti. Bolje rečeno vodi bazu iz jednog
u drugo konzistentno stanje
◦ Islolation (Izolacija) – transakcija se izvršava izolovano od druge
transakcije
◦ Durability ili Permanency (Trajnost promene) – promene u bazi
koje su potvrđene (commit-ovane) moraju biti trajne u bazi. One
ne smeju biti izgubljene zbog bilo kakve greške.
KONTROLA
KONKURENTNOSTI
TEHNIKE
Većina tehnika za kontrolu
konkurentnosti obezbeđuje serijsko
izvršavanje.
Jedan važan skup protokola koristi
tehniku zaključavanja podataka da bi
sprečilo da više transakcija pristupa
istovremeno istom podatku.
Tehnike zaključavanja se koriste u većini
komercijalnih SUBP.
TEHNIKE ZA KONTROLU
Tehnike kontrole konkurentnosti:
◦ Tehnika zaključavanja
◦ Kontrola konkurentnosti na bazi TimeStamp redosleda
◦ Više verzijska kontrola konkurentnosti
◦ Tehnika validacije (optimistička) kontrola
konkurentnosti
◦ Granularnost podataka i višestruko granularno
zaključavanje
◦ Upotreba katanaca za kontrolu konkurentnosti u
indeksima
◦ Ostale kontrole konkurentnosti
PROBLEMI KONKURENTNOG
PRISTUPA
U slučaju da se ne poštuje kontrola
konkurentnosti može doći do sledećih
problema:
◦ Problem gubitka ažuriranja
◦ Problem privremenog ažuriranja
◦ Problem pogrešnog sabiranja
Problem gubitka ažuriranja
Pojavljuje se kada se istovremeno čitaju
vrednosti iz baze i onda se odvojeno
ažuriraju.
Primer: U sistemu rezervacije karata
izvršenje transakcija T1 (prebacivanje 5
rezervacija sa jednog na drugi let) i T2
(rezervacija 4 karte) istovremeno. Ako je
broj rezervacija X=80. Rezultat
transakcije je prikazan u Tabeli 2.
Problem gubitka ažuriranja
Write_item(Y)
tn UMESTO 79 IMAMO 84
Problem privremenog ažuriranja
nastaje kada se dve transakcije izvršavaju
paralelno
Ako prva transakcija promeni neku
vrednost koja se kasnije koristi u drugoj
transakciji a nakon toga se prva
transakcija poništi odnosno umesto
naredbe COMMIT prva transkacija zatraži
opoziv – izdavanjem naredbe
ROLLBACK
Problem privremenog ažuriranja
ROLLBACK
tn
Problem pogrešnog sabiranja
Pojavljuje se kada se dve transakcije
izvršavaju paralelno. Jedna ažurira bazu a
druga pravi zbrajanje i u tom procesu
uzima dio podataka pre a dio posle
ažuriranja.
Problem pogrešnog sabiranja
Read_item(X) //80
Write_item(X) //70 Suma = suma +X //90
COMMIT Read_item(Y) // 3
Suma = Suma / Y //30
Read_item(Y) // 3
Y:=Y+M // 5 tn
Write_item(Y) // 5
unlock_item(X)
koja LOCK(X) postavlja na 0, odnosno otključava
podatak tako da se podatku X može pristupiti od
strane druge transakcije.
Binarni katanac
Svi podaci o katancima se upisuju u
tabelu katanaca sa sledećim podacima:
◦ ime podatka,
◦ katanac,
◦ transkacija
Oni podaci koji nisu upisani u tabelu katanaca
smatraju se da su otključani.
SUBP (engl. DBMS) ima podsistem za
upravljanje katancima (engl. Lock Manger)
PSEUDO KOD binarnog katanca
lock_item(X):
B: if LOCK(X)=O //podatak je otključan
then LOCK(X)1 //zaključaj podatak
else begin
wait (until lock(X)=0);
go to B
end;
unlock_item (X):
LOCK (X) O; //otključava podatak
PRAVILA RADA
Pravila rada sa binarnim katancima
◦ Transakcija T mora obaviti operaciju lock_item(X)
pre bilo koje read_item(X) ili write_item(X)
operacije
◦ Transakcija T mora obaviti operaciju
unlock_item(X) posle svih read_item(X) ili
write_item(X) operacije u transakciji T
◦ Transakcija T neće uraditi lock_item(X) ako je X
već zaključan
◦ Transakcija T neće uraditi unlock_item(X) ako
transakcija nema katanac na podatku X
Deljeni/Ekskluzivni katanac
Deljeno tj eksluzivno zaključavanje
dozvoljava da više transakcija čita
podatke ali samo jedna transkacija može
da piše (ažurira) podatak.
Da bi se to omogućilo koriste se različiti
tipovi katanaca, da transakcija mogla da
ažurira podatak mora da ima eksluzivni
pristup (eksluzivni katanac).
Deljeni/Ekskluzivni katanac
Pri upotrebi deljenog/ eksluzivnog
katanca ili čitaj / piši (engl. write / read)
katanca, koriste se sledeće tri operacije,
pri čemu X predstavlja podatak kojem
transakcija pristupa:
◦ Read_lock(X)
◦ Write_lock(X)
◦ Unlock(X)
Deljeni/Ekskluzivni katanac
Prilikom
zaključavanja podatka X,
LOCK(X) može imati sledeće statuse:
◦ Read_locked (shared_locked) – katanac
čitanja. Ostale transakcije mogu čitati podatak
i može ih biti više nad jednim podatkom
◦ Write_locked (exclusive_locked) –katanac
pisanja. Samo jedna transakcija može
pristupiti podatku, da bi ga izmenila.
◦ Unlocked – otključaj podatak. Izbriši katanac
sa podatka
Deljeni/Ekskluzivni katanac
Svaki zapis u tabeli katanaca mora da ima
sledeća četiri polja:
◦ Naziv polja
◦ Lock (vrsta katanca)
◦ Broj čitanja
◦ Transakcija
Deljeni/Ekskluzivni katanac - Pravila
Kada se koristi deljeno/eksluzivno zaključavanje, sistem
mora da se pridržava sledećih pravila:
1. Transakcija T mora uraditi operacije read_lock(X) ili
write_locked(X) pre bilo koje read_item(X)
2. Transakcija T mora uraditi operaciju write_locked(X) pre
bilo koje write_item(X)
3. Transakcija T mora uraditi operaciju unlocked(X) posle
svih read_item(X) i write_item(X)
4. Transakcija T neće uraditi read_lock(X) ako već postoji
read ili write katanac na X
5. Transakcija T neće uraditi write_lock(X) ako transakcija
ima read ili write katanac nad X
6. Transakcija T neće uraditi unlock(X) operaciju ako
transakcija nema read ili write katanac na X
Deljeni/Ekskluzivni katanac - Pravila
Pravilo 4 i 5 se mogu malo promeniti i to:
◦ Ako transakcija T ima read_lock(X) i ako
transakcija traba da postavi write_lock(X) to
se može uraditi ako jedino transakcija T ima
read_lock na X
◦ Ako transakcija T ima write_lock(X) ona
može katanac nad X promeniti u read_lock(X)
PSEUDO KOD
read_lock (X):
B: if LOCK(X)= "unlocked"
then begin LOCK(X) "read_locked";
no_of_reads(X) 1 //broj zakljucanih
end
else if LOCK(X)="read_Iocked"
then no_of_reads(X) no_of_reads(X) + 1 //inkrementiraj
broj katanaca
else
begin wait (until LOCK(X) = "unlocked")
go to B
end;
PSEUDO KOD
write_lock (X):
B: if LOCK(X) = "unlocked"
then LOCK(X) ''write_locked''
else
begin wait (until LOCK(X)= "unlocked");
go to B
end;
PSEUDO KOD
unlock (X):
if LOCK (X) = "write_Iocked"
then begin LOCK(X) "unlocked;"
else if LOCK(X) = "read_locked"
then begin
no_of_reads(X) no_of_reads(X) - 1;
if no_of_reads(X) = O
then begin LOCK(X)= "unlocked";
end;
end;
Prerano otključavanje podataka
I transakcija Vreme II transakcija
read_lock(Y) t1
read_item(Y) //30 Inicijalna
vrijednost
X=20,
unlock(Y)
Y=30;
read_lock(X)
read_item(X) //20
Rezultat je
unlock(X) X=50, Y=50
write_lock(Y) umesto
read_item(Y) //30 X=70, Y=50
Y:=X+Y //50
write_item(Y)
unlock(Y)
write_lock(X)
read_item(X) //20
X:=X+Y //50
write_item(X)
DVOFAZNO
ZAKLjUČAVANjE
Da bi se prethodni problem prevazišao potrebno je koristiti
dodatni protokol zaključavanja i otključavanja poznat kao
dvofazno zaključavanje
Dvofaznost je metoda za postizanje linearizovanog
izvršenja skupa transakcija, korišćenjem mehanizma
zaključavanj
Transakcija je dvofazna ako se sastoji od dve serijske faze:
faze zaključavanja objekata i faze otključavanja objekata
U fazi zaključavanja nema nijedne radnje otključavanja
objekta, odnosno u fazi otključavanja više nema radnji
zaključavanja (naravno, obe ove faze uključuju i druge
operacije nad objektima kao što su čitanje, obrada, upis
objekata)
Dvofazno zaključavanje
Za transakciju se kaže da slijedi dvofazni protokol ako
sve operacije zaključavanja (read_lock, write_lock)
prethode prvom otključavanju.
Takva transakcija ima dvije faze i to:
◦ fazu širenja (zaključavanja) i
◦ fazu skupljanja (otključavanja)
Dvofazno zaključavanje može zaključati dosta objekata.
U nekim momentima može držati zaključane i objekte
koji joj više nisu potrebni.
Iz tih razloga neke druge transakcije mogu čekati duže
na izvršenje. To je cijena dvofaznog zaključavanja.
Dvofazno zaključavanje
Konzervativno dvofazno zaključavanje
zahteva da transakcija zaključa sve
potrebne podatke prije početka izvršenja sa
predefinisanim read-skupom i write-
skupom.
Ako transakcija nešto ne može zaključati
ona čeka da se taj resurs oslobodi
Ova metoda nije primjenljiva jer se nekada
ne može znati šta se sve treba zaključati.
Dvofazno zaključavanje
Striktna dvofazno zaključavanje,
transakcija ne oslobađa ni jedan katanac
dok se transakcija ne završi.
Nijedna druga transakcija ne može
zaključati, čitati ni pisati podatak dok se
ne uradi commit ili abort.
Dvofazno zaključavanje
Rigorozno dvofazno zaključavanje
transakcija ne oslobađa ni jedan
ekskluzivni ni dijeljeni lok dok se
transkacija ne završi.
Lakša je za realizaciju nego strikno
zaključavanje
Dvofazno zaključavanje
I transakcija Vreme II transakcija
Ažuriranje seta S1
t1 (izvršava se X zaključavanje)
Čitanje seta S1
(zahtjev za S zaključavanjem)
čekanje
čekanje COMMIT ili ROLLBACK
(oslobađa se X
čekanje
zaključavanje)
čekanje se prekida
obnavlja se Čitanje seta S1 tn
(izvršava se S zaključavanje)
NEPOVRATNO
ZAKLjUČAVANjE
NEPOVRATNO ZAKLjUČAVANjE
Nepovratno zaključavanje podataka (engl. Deadlock) je
pojava kada svaka transakcija u skupu od dvije ili više
transakcija čeka za nekim resursom koji je zaključan od
druge transakcije iz tog skupa.
T1 i T2 su nepovratno
zaključane u parcijalnom
I transakcija Vreme II transakcija izvršenju, Transakcija T1 čeka
Read_lock(Y) t1 u redu za podatkom X, koji je
Read_item(Y) zaključan od
Read_lock(X) transakcije T2 dok T2 čeka u
redu za podatak Y koji je
Read_item(X) zaključan od transakcije T1.
Write_lock(X) Međutim, ni transakcija T1 ni
T2 niti bilo koja transakcija
Write_lock(Y) ne mogu pristupiti podatku X
i Y.
tn
Nepovratno zaključavanje
Jedan od načina da se spreči deadlock jeste da
se koristi preventivni protokol.
Ovaj protokol zahtjeva da svaka transakcija
na početku zaključa sve resurse (podatke) koji
joj trebaju. Ako joj svi resursi nisu dostupni
transakcije ne vrši nikakvo zaključavanje i
takva transakcija čeka neko vrijeme i opet
pokušava izvršiti zaključavanje.
Ovo rešenje smanjuje sposobnost
konkurentnog pristupa.
Nepovratno zaključavanje
Drugi način prevencije jeste na bazi
vremenske oznake (engl. Timestamp).
Koncept timestamp jeste da se svakoj
transakciji dodijeli jedinstven identifikator
zvani timestamp TS(T) koji se definiše na
osnovu vremena startanja transakcije.
Ako je transakcija T1 startala prije
transakcije T2 tada je TS(T1) < TS(T2).
DEADLOCK - TimeStamp
Ovaj protokol se zasniva na sledećim pravilima:
◦ Wait-die – Ako je TS(T1) < TS(T2) tada (T1 je
startala prije) T1 ima dozvolu da čeka inače ako je
TS(T1) >= TS(T2) (T1 je startala kasnije) T1 se
prekida i startuje kasnije sa istim TS {Starija
transakcija čeka a mlađa se ukida i kasnije ponovno
starta}
◦ Wound-wait – ako je TS(T1) < TS(T2) tada se
prekida T2 i restartuje kasnije sa istim TS inače je
dozvoljeno da T1 čeka {Mladja transakcija čeka a
starija se ukida i kasnije ponovno starta}
DEADLOCK - TimeStamp
U Wait-die, starijijoj transakciji je
dozvoljeno da čeka na mlađu
transkakciju, ukoliko mlađa transakcija
zahteva podatak koji drži starija,
transakcija se poništava i restartuje.
Druga grupa protokola za prevenciju
deadlocka ne zahteva vremenske oznake,
one uključuju no waiting (NW) i cautious
waiting (CW) algoritme.
No waiting algoritam
Kod no waiting algoritma, kada transakcija
nije u mogućnosti da zaključa podatak ona
se odmah prekida i restartuje nakon
izvjesnog vremena bez provjere da li se
podatak oslobodio.
Ova šema može prouzrokovati velik broj
prekidanja i restartanja transakcija što samo
po sebi znači mnogo upisivanja po
diskovima, što proizvodi usporenja sistema.
Cautious waiting
Cautious waiting algoritam predlaže da se
pokuša smanjiti broj nepotrebnih
prekida/restartovanja.
Pretpostavimo da transakcija T1 pokušava da
zaključa podatak X ali nije u stanju da to učini
jer je X zaključan od neke druge transakcije T2,
u tom slučaju važi pravilo:
◦ Ako transakcija T2 nije blokirana (ne čeka neki drugi
objekat) tada je T1 blokirana i ima dozvolu da čeka,
ona čeka inače ako nema dozvolu za čekanje T1 se
prekida. Blokiranim transakcijama se mjeri vrijeme
b(T) i na osnovu njega se transakcije poništavaju.
Još jedan pristup je detekcija deadlock-a, gde sistem proverava stanje
da li deadlock zaista postoji
Ova solucija je atraktivnija ako znamo da će biti mešanje između
transakcija to jest ako različite transakcije retko pristupaju istom
podatku u isto vreme.
To se može desiti ako su transakcije kratke i svaka transakcija se
zaključava samo nekoliko podataka ili je opterećenje transakcije malo.
ako su transakcije duge i svaka transakcija koristi mnogo podataka ili
opterećenje transakcije je prilično veliko to može biti korisno za
korištenje šeme za prevenciju deadlocka.
Jednostavan način za otkrivanje deadlocka se vrši konstrukcijom i
održavanje wait-for grafa u kom se navode podaci koji čvor
(transakcija) čeka na završetak transakcije.
Ako graf ima ciklus tada u njemu postoji deadlock
Jedan od problema sa ovim pristupom je pitanje
određivanja kada sistem treba da proveri da li ima deadlock.
Kriterijumi koji se mogu koristiti su broj transakcija koji se
trenutno izvršava ili vremenski period nekoliko transakcija
koje čekaju da zaključaju podatak.
Ako je sistem u stanju deadlock, neke transakcije koje
izazivaju deadlock trebaju se prekinuti i te transakcije se
nazivaju žrtve odnosno u engleskoj literaturi poznate pod
nazivom Victim selectiom.
Algoritam za odabir žrtava omogućava da transakcije sa
više ažuriranja, dužim vremenom izvršenja nastave sa
radom.
Još jedan jednostavan način detekcije
deadlocka je upotreba vremenskih oznaka
(engl.timestamp). u ovom metodu, ako
transakcija čeka duže od definisanog
vremena , sistem pretpostavlja da
transakcija je možda u deadlock ili je
prekinuta bez obzira da li postoji deadlock
ili ne.
Izgladnjivanje (engl. starivation)
Slučaj kada transakcija ne može izvršavati
nedefinisano dugo vremena dok se druge
transakcije izvršavaju normalno. T
o se može javiti ako je plan za zaključavanje
“nepravedan” odnosno ako se pojedinim
transakcijama daju veliki ili mali prioriteti tako
da neka transakcija ne može da dođe do resursa.
Jedan od metoda za rešavanje je ‘poštena’
raspodela resursa npr. po principu prva
transakcija se pojavi - prva se izvršava.
OSTALE TEHNIKE
KONTROLE
KONKURENTOSTI
TEHNIKE KONTROLE
KONKURENTNOSTI
Kontrola konkurentnosti na bazi TimeStamp
redosleda
Viševerzijska kontrola konkurentnosti
Tehnika validacije (optimistička) kontrola
konkurentnosti
Granularnost podataka i višestruko granularno
zaključavanje
Upotreba katanaca za kontrolu konkurentnosti u
indeksima
Ostale kontrole konkurentnosti
Kontrola konkurentnosti na bazi
TimeStamp redosleda
Svakoj transakciji se dodeljuje jedinstveni
identifikator u redosledu u kome su transakcije
dospele u sistem, pa se identifikator može tretirati
kao vreme njenog početka
Konflikti u izvršenju transakcija nastaju kada
neka transakcija zahteva da „vidi“ neki podatak
kojeg je „mlađa“ transakcija ažurirala ili kada
neka transakcija hoće da ažurira neki podatak
kojeg je mlađa transakcija već ažurirala ili videla.
Konflikti se razrešavaju ponovnim startovanjem
„starije“ transakcije.
Kontrola konkurentnosti na bazi TimeStamp
redosleda
Svakom objektu baze podataka pridružuju se dve
oznake:
RMAX, najveći identifikator transakcije koja je
uspešno izvršila čitanje posmatranog objekta, i
UMAX, najveći identifikator transakcije koja je
uspešno izvršila ažuriranje posmatranog objekta
U ovoj tehnici nema zaključavanja objekata BP pa
samim time ni deadlock-a, integritet je očuvan
Međutim, tehnika vremenskog označavanja obično
dovodi do toga da se veliki broj transakcija
poništava i ponovo startuje
Kontrola konkurentnosti na bazi TimeStamp
redosleda
Osnove timestamp izvršenja:
◦ Svakoj transakciji se prilikom početka izvršenja dodijeli timestamp
tako da se zna tačan redoslijed startanja transakcija TS(X)
◦ Read_TS(X) – metoda koja za podatak X daje zadnji TS koji je
uspješno pročitao podatak X
◦ Write_TS(X) – piše TS za zadnje uspješno pisanje podatka X
◦ Kada neka transakcija T pokušava da koristi Read_TS(X) i
Write_TS(X) osnovni TS algoritam poredi TS transakcije i upisani
TS posljednje uspješne transakcije. Ako poredak izvršenja
transakcija nije dobar vrši se poništenje transakcije T i ona se
ponovno starta sa novim timestampom. Sve transakcije koje su
koristile podatke nakon transakcije T se također poništavaju i
dešava se t.z. Kaskadni rollback.
◦ Deadlock se ne može desiti ali se može desiti periodični prekid i
restart transakcija
Viševerzijska kontrola konkurentnosti
Kod ove metode se prilikom ažuriranja čuvaju i
stare i nove vrijednosti podataka (više verzija)
Kada transakcija traži podatak odgovarajuća
verzija podatka se pronađe.
Kada se piše podatak uvijek se piše nova verzija
podataka a stara verzija se zadržava.
Međutim, više verzija podataka zahtjeva više
prostora.
Ekstremna verzija ovakvog načina rada su
vremenske baze koje čuvaju sve promjene u bazi.
U ovoj metodi postoji više verzija istog
podatka koji se čuva u bazi (X1,
X2,...,Xn). Za svaku verziju, odnosno
verziju podatka Xi čuvaju se dva
timestampa i to:
◦ Read_TS(Xi) – zadnje čitanje podatka Xi od
strane uspešne transakcije
◦ Write_TS(Xi) – zadnji timestamp transakcije
koja je uradila write podatka Xi
Transakcija T se poništava (abortira) i vrši
se njen rollback ako T:
◦ Pokušava upisati podatak X iza već upisanog
podatka X u transakciji koja je startana kasnije
◦ Ako postoji čitanje podatka X transakcije koja
je startana iza transakcije T. Inače se podatak
X piše sa novom verzijom u bazu od strane
transakcije T
Ako Transakcija T koristi read_item(X) i
nađe verziju Xi koji ima veče vrijeme
pisanja transakcije (startana kasnije) tada
se vrača odgovarajuča verzija X i upisuje
se TS za read_TS(Xi) koje je jednako
max(read_TS(Xi) ili TS(T)). Read
operacija je uvijek uspješno izvršena
Tehnika validacije (optimistička)
kontrola
Kod tehnike validacije kontrole konkurentnosti
unaprijed se ne vrši nikakva kontrola.
Kod ove metode se ažuriranje vrši tek kada se
transakcija završi.
Za vrijeme izvršenja transakcije ažuriranje se
radi na lokalnoj kopiji.
Na kraju transakcije vrši se validacija.
Sve informacije potrebne za validaciju
obezbjeđuje sistem i ako je validacija uspješna
transakcija se prihvata.
Granularnost podataka i višestruko
granularno zaključavanje
Sve tehnike kontrole konkurentnosti
pretpostavljaju da se baza sastoji od
imenovanih podataka. Podatak iz baze
može biti:
◦ Polje sloga baze
◦ Slog baze
◦ Bloka na disku
◦ Cijele datoteke
◦ Cijele baze
Granularnost podataka
Granularnost ukazuje na nivo detalja ili sumarizacije
jedinica podataka u bazi podataka. Što više detalja tu ima,
to je niži nivo granularnosti.
Što manje detalja tu ima to je viši nivo granularnosti
Zaključavanje veće granule uvodi više zabrana za pristup
podacima (baza, datoteka).
Ako se koriste manje granule (polje, slog) tada ima više
katanaca – znači više katanaca se postavlja i skida.
U tom slučaju potrebno je više prostora za tabele katanaca
odnosno više vremena za izvršenje zaključavanja tj
potrebno je više prostora i vremena za read_TS i write_TS.
Granularnost podataka
Optimalna veličina granule zavisi od tipa
transakcija odnosno od aplikacije, ako
transakcija pristupa malom broju slogova tada
je bolje zaključavati slogove.
Ako transakcija prilazi većem broju slogova
tada je bolje zaključavati blok ili čak datoteku.
Veličina granule zavisi od vrste transakcije.
Najbolja varijanta je da baza podržava
zaključavanja raznih tipova granula
Ostale kontrole konkurentnosti
problem koji se javlja sa ubacivanjem i brisanjem slogova,
taj problem je poznat pod nazivom kao fantomski problem
Fantomski problem se pojavljuje kada transakcija T upiše
slog a druga transakcija pretražuje slogove sa uslovom koji
bi uključio i ovaj novi slog u rezultat ali ga ne uključuje.
Kada se novi podatak ubacuje njemu se ne može pristupiti
dok se operacija ne kompletira. Takav podatak je
eksluzivno zaključan. Katanci se oslobađaju istovremeno i
upisuje se timestamp od transakcije
Pre brisanja postavlja se eksluzivni lok na početku. Za
timestamp protokol mora biti siguran da nije bilo čitanja
nakon zaključavanja.
Reza (engl. latch)
Reza je kratki katanac koji se obično
koristi za izvršenje kratkih operacija koje
ne mogu proizvesti deadlok ili slične
probleme. Katanac se koristi za vrijeme
pisanja bafera na disk da ne bi došlo do
ažuriranja bloka za vrijeme pisanja.