Veri Tabanı Sistemleri
E¸szamanlı ¸Calı¸sma
H. Turgut Uyar Sule ¨¸ O˘g¨ud¨uc¨u
2002-2012
1 / 45
License
c
2002-2012 T. Uyar, ¸S. ¨O˘g¨ud¨uc¨u
You are free:
I to Share – to copy, distribute and transmit the work I to Remix – to adapt the work
Under the following conditions:
I Attribution – You must attribute the work in the manner specified by the author or licensor (but not in any way that suggests that they endorse you or your use of the work).
I Noncommercial – You may not use this work for commercial purposes.
I Share Alike – If you alter, transform, or build upon this work, you may distribute the resulting work only under the same or similar license to this one.
Legal code (the full license):
http://creativecommons.org/licenses/by-nc-sa/3.0/
2 / 45
Konular
Hareket Y¨onetimi Giri¸s
Sistemin D¨uzeltilmesi
˙Iki A¸samalı Sonlandırma
E¸szamanlı ¸Calı¸sma Giri¸s
Kilitleme Yalıtım D¨uzeyleri Niyet Kilitleri
3 / 45
Hareket Y¨ onetimi
I birden fazla i¸slemin topluca yapılması gerekebilir
I bir i¸slemin yapılıp di˘gerlerinin yapılmaması tutarsızlık yaratabilir I birden fazla i¸slemin topluca yapılması garanti edilemez
I en azından de˘gi¸sikliklerden ¨onceki duruma d¨on¨ulebilmeli
Tanım
hareket: bir i¸sin mantıksal bir birimi
4 / 45
Hareket ¨ Orne˘ gi
Ornek (bir banka hesabından di˘¨ gerine para aktarma)
U P D A T E A C C O U N T S SET B A L A N C E = B A L A N C E - 100 W H E R E A C C O U N T I D = 123
U P D A T E A C C O U N T S SET B A L A N C E = B A L A N C E + 100 W H E R E A C C O U N T I D = 456
Hareket ¨ Ozellikleri
I b¨ol¨unmezlik
I ya tam yapılır, ya hi¸c yapılmaz I tutarlılık
I bir tutarlı durumdan di˘ger bir tutarlı duruma ge¸ci¸s I yalıtım
I sona ermemi¸s bir hareketin i¸slemlerinin di˘ger hareketleri etkileyip etkilemedi˘gi
I kalıcılık
I bir hareket sonlandırıldıktan sonra sistem ¸c¨okse de verilerin zarar g¨ormemesi
Hareket ˙I¸slemleri
ba¸slatma
B E G I N [ WO RK | T R A N S A C T I O N ]
sonlandırma
C O M M I T [ WO RK | T R A N S A C T I O N ]
vazge¸cme
R O L L B A C K [ WO RK | T R A N S A C T I O N ]
7 / 45
Hareket ¨ Orne˘ gi
Ornek¨
B E G I N T R A N S A C T I O N ON E R R O R GO TO UN DO
U P D A T E A C C O U N T S SET B A L A N C E = B A L A N C E - 100 W H E R E ( A C C O U N T I D = 12 3)
U P D A T E A C C O U N T S SET B A L A N C E = B A L A N C E + 100 W H E R E ( A C C O U N T I D = 45 6)
C O M M I T ...
UN DO : R O L L B A C K
8 / 45
Sistemin D¨ uzeltilmesi
I bir hareket s¨urerken sistemin ¸c¨okt¨u˘g¨un¨u d¨u¸s¨un¨un
I bellek tamponlarındaki veriler diske yazılmamı¸s durumda I kalıcılık nasıl sa˘glanacak?
I veri, sistemde ba¸ska yerde yazılı verilerden t¨uretilebilmeli
I i¸c d¨uzeyde
9 / 45
G¨ unl¨ uk
I g¨unl¨ukher i¸slemden etkilenen her ¸coklunun i¸slemden ¨onceki ve sonraki de˘gerlerini tutar
I g¨unl¨u˘ge ¨onceden yazma kuralı:
hareket sonlanmadan ¨once g¨unl¨uk fiziksel ortama yazılmalı
I g¨unl¨uk kayıtlarına eri¸sim i¸slemin do˘gası gere˘gi ardı¸sıl
10 / 45
Denetim Noktaları
I belli aralıklarla g¨unl¨uktedenetim noktalarıolu¸sturulur
I bellek tamponlarındaki veriler fiziksel ortama yazılır
I denetim noktası g¨unl¨u˘ge not edilir
I o an s¨urmekte olan hareketler not edilir
D¨ uzeltme Listeleri
I aksaklıktan sonra hangi hareketler geri alınacak, hangileri sonlandırılacak?
I iki liste olu¸stur: geri alınacaklar (G), yinelenecekler (Y) I tC: g¨unl¨ukte kayıtlı son denetim noktası
I tCanında etkin olan hareketleri G’ye ekle I tC’den ba¸slayarak kayıtları ileri do˘gru tara
I ba¸slayan bir hareketle kar¸sıla¸sırsan G’ye ekle
I biten bir hareketle kar¸sıla¸sırsan Y’ye ge¸cir
D¨ uzeltme ¨ Orne˘ gi
Ornek¨I tC:
G = {T2,T3} Y = ∅
I T4ba¸sladı:
G = {T2, T3, T4} Y = ∅
I T2bitti:
G = {T3, T4} Y = {T2}
I T5ba¸sladı:
G = {T3, T4, T5} Y = {T2}
I T4bitti:
G = {T3, T5} Y = {T2, T4}
13 / 45
D¨ uzeltme S¨ ureci
I kayıtları g¨unl¨uk sonundan geriye do˘gru tara
I G’deki hareketlerin yaptıkları de˘gi¸siklikleri geri al I kayıtları ileriye do˘gru tara
I Y’deki hareketlerin yaptıkları de˘gi¸siklikleri yinele
14 / 45
˙Iki A¸samalı Sonlandırma
I farklı kaynak y¨oneticileri var
I geri alma - sonlandırma sistemleri ayrı I etkilenecek veriler farklı kaynak y¨oneticilerinde
I ya hepsinde birden sonlandırılacak ya da hepsinde birden geri alınacak I e¸sg¨ud¨um sa˘glayıcı
15 / 45
Protokol
I e¸sg¨ud¨um sa˘glayıcı, b¨ut¨un katılımcılara hareketle ilgili b¨ut¨un verilerin kayıtlarını kalıcı ortama yazmalarını s¨oyler
I e¸sg¨ud¨um sa˘glayıcı, b¨ut¨un katılımcılardan
hareketi ba¸slatmalarını ve sonucu kendisine bildirmelerini ister
I b¨ut¨un katılımcılardan ”ba¸sarılı” yanıtı alırsa hareketin sonlandırılmasına karar verir
I bir tane bile ”ba¸sarısız” yanıtı gelirse hareketin geri alınmasına karar verir
I e¸sg¨ud¨um sa˘glayıcı, b¨ut¨un katılımcılara kararı bildirir
16 / 45
Kaynaklar
Okunacak: Date
I Chapter 15: Recovery
E¸szamanlı ¸ Calı¸sma
I e¸szamanlı ¸calı¸san hareketler nedeniyle ¸cıkabilecek sorunlar:
I yitirilen g¨uncelleme
I kesinle¸smemi¸s veriye ba˘gımlılık
I tutarsız ¸c¨oz¨umleme
Yitirilen G¨ uncelleme
Ornek¨
Hareket A Hareket B
... ...
RETRIEVE p ...
... ...
... RETRIEVE p
... ...
UPDATE p ...
... ...
... UPDATE p
... ...
19 / 45
Kesinle¸smemi¸s Veriye Ba˘ gımlılık
Ornek¨
Hareket A Hareket B
... ...
... UPDATE p
... ...
RETRIEVE p ...
... ...
... ROLLBACK
...
20 / 45
Tutarsız ¸ C¨ oz¨ umleme
Ornek (hesap toplamı: acc1=40, acc2=50, acc3=30)¨
Hareket A Hareket B
... ...
RETRIEVE acc1 (40) ...
RETRIEVE acc2 (90) ...
... ...
... UPDATE acc3 (30 → 20)
... UPDATE acc1 (40 → 50)
... COMMIT
... ...
RETRIEVE acc3 (110) ...
21 / 45
¸
Cakı¸smalar
I A okuyor, B okuyor
I sorun yok I A okuyor, B yazıyor
I yinelenemez okuma (tutarsız ¸c¨oz¨umleme) I A yazıyor, B okuyor
I kirli okuma (kesinle¸smemi¸s veriye ba˘gımlılık) I A yazıyor, B yazıyor
I kirli yazma (yitirilen g¨uncelleme)
22 / 45
Kilitleme
I hareketler ¨uzerinde i¸slem yapacakları ¸cokluları kilitlesinler
I okuma kilidi (S)
I yazma kilidi (X)
I i¸sleri bitince kilitleri bıraksınlar
Kilit ˙Istekleri
kilit tipi uyumluluk matrisi
X S -
X H H E
S H E E
I yazma kilidi varsa ba¸ska hareketlerin her t¨url¨u iste˘gi reddedilir
I okuma kilidi varsa:
I ba¸ska hareketlerin yazma kilidi istekleri reddedilir
Kilitleme Protokol¨ u
I hareket, yapmak istedi˘gi i¸sleme g¨ore kilit iste˘ginde bulunur
I okuma kilidi varsa yazma kilidine ¸cevrilmesi I istek yerine getirilemiyorsa beklemeye ba¸slar
I di˘ger hareket kilidi bırakınca devam eder
I sonsuz bekleme
25 / 45
Yitirilen G¨ uncelleme
Ornek¨
Hareket A Hareket B
... ...
RETRIEVE p (S+) ...
... ...
... RETRIEVE p (S+)
... ...
UPDATE p (X-) ...
bekle ...
bekle UPDATE p (X-)
bekle bekle
26 / 45
Kesinle¸smemi¸s Veriye Ba˘ gımlılık
Ornek¨
Hareket A Hareket B
... ...
... UPDATE p (X+)
... ...
RETRIEVE p (S-) ...
bekle ...
bekle ROLLBACK
RETRIEVE p (S+) ...
27 / 45
Tutarsız ¸ C¨ oz¨ umleme
Ornek (hesap toplamı: acc1=40, acc2=50, acc3=30)¨
Hareket A Hareket B
... ...
RETRIEVE acc1 (S+) ...
RETRIEVE acc2 (S+) ...
... ...
... UPDATE acc3 (X+)
... UPDATE acc1 (X-)
... bekle
RETRIEVE acc3 (S-) bekle
bekle bekle
28 / 45
Ol¨ ¨ umc¨ ul Kilitlenme
Tanım
¨ol¨umc¨ul kilitlenme:
hareketlerin birbirlerinin kilitleri bırakmalarını beklemesi
I neredeyse her zaman iki hareket arasında
I yapılabilecekler:
I farketmek ve ¸c¨ozmek
I ¨onlemek
Ol¨ ¨ umc¨ ul Kilitlenmenin ¸ C¨ oz¨ ulmesi
Ornek¨ I bekleme grafı
I birkurbanse¸c ve ¨old¨ur
Ol¨ ¨ umc¨ ul Kilitlenmenin ¨ Onlenmesi
I her hareketin ba¸slama zamanı m¨uhr¨u var
I A hareketinin kilit iste˘gi
B hareketinin tuttu˘gu bir kilitle ¸celi¸siyorsa:
I bekle-¨ol: A, B’den ya¸slıysa bekler, gen¸cse ¨ol¨ur A geri alınıp yeniden ba¸slatılır
I yarala-bekle: A, B’den gen¸cse bekler, ya¸slıysa B’yi yaralar B geri alınıp yeniden ba¸slatılır
I yeniden ba¸slatılan hareketin zaman m¨uhr¨u de˘gi¸stirilmez
31 / 45
Kilit Komutları
okuma kilidi
S E L E C T q u e r y FOR S H A R E
yazma kilidi
S E L E C T q u e r y FOR U P D A T E
32 / 45
Yalıtım D¨ uzeyleri
I yalıtım azaltılırsa e¸szamanlılık artırılabilir
I de˘gi¸sik yalıtım d¨uzeyleri:
I serile¸stirilebilir
I yinelenebilir okuma
I sonlandırılanları okuyabilme
I sonlandırılmayanları okuyabilme
33 / 45
Serile¸stirilebilirlik
I seri ¸calı¸stırma:
hareketlerin biri bitmeden di˘geri ba¸slamıyor
I serile¸stirilebilir: e¸szamanlı ¸calı¸smanın sonucu her zaman seri ¸calı¸stırmalardan birinin sonucu ile aynı Ornek¨
I x = 10
I A hareketi: x = x + 1
I B hareketi: x = 2 ∗ x
I ¨once A, sonra B: x = 22
I ¨once B, sonra A: x = 21
34 / 45
˙Iki A¸samalı Kilitleme
I iki a¸samalı kilitleme:
herhangi bir kilit bırakıldıktan sonra yeni kilit iste˘ginde bulunulmaz
I geni¸sleme a¸saması: alınan kilit sayısı artıyor
I daralma a¸saması: alınan kilit sayısı azalıyor I iki a¸samalı sıkı kilitleme:
b¨ut¨un kilitler hareketin sonunda bırakılır
I B¨ut¨un hareketler iki a¸samalı kilitleme protokol¨une uyarsa b¨ut¨un e¸szamanlı ¸calı¸stırmalar serile¸stirilebilir.
Sonlandırılanları Okuyabilme
I yalnızca yazma kilitleri hareket sonuna kadar tutulur Ornek¨
Hareket A Hareket B
... ...
RETRIEVE p (S+) ...
... ...
kilidi bırak ...
... ...
... UPDATE p (X+)
... COMMIT
Hayaletler
Tanım
hayalet: sorgu yeniden ¸calı¸stırıldı˘gında yeni ¸coklular ortaya ¸cıkıyor Ornek¨
I A hareketi bir m¨u¸sterinin hesaplarının ortalamasını hesaplıyor:
100+100+100
3 = 100
I B hareketi aynı m¨u¸steriye 200 birimlik yeni bir hesap yaratıyor
I A hareketi hesabı yeniden yapıyor:
100+100+100+200
4 = 125
37 / 45
Yalıtım D¨ uzeyi Belirleme
Komut
SET T R A N S A C T I O N I S O L A T I O N L E V E L [ S E R I A L I Z A B L E | R E P E A T A B L E RE AD |
RE AD C O M M I T T E D | RE AD U N C O M M I T T E D ]
38 / 45
Yalıtım D¨ uzeyi Sorunları
yalıtım d¨uzeyi kirli yinelemeyen hayalet
okuma okuma
READ UNCOMMITTED E E E
READ COMMITTED H E E
REPEATABLE READ H H E
SERIALIZABLE H H H
39 / 45
Kilitleme Birimi
I kilitleme ¸coklu de˘gil ba˘gıntı de˘gi¸skeni biriminde yapılabilir
I hatta veri tabanı biriminde I birim geni¸sledik¸ce e¸szamanlılık azalır
I ¸coklular ¨uzerinde alınmı¸s kilitlerin bulunması zor
→ ¨once ba˘gıntı de˘gi¸skeni d¨uzeyindeniyet kilitlerialınsın
40 / 45
Niyet Kilitleri
I Par¸cayı Okuma (IS):
hareket bazı ¸cokluları okumaya niyetleniyor
I Par¸caya Yazma (IX):
IS + hareket bazı ¸coklulara yazmaya niyetleniyor
I B¨ut¨un¨u Okuma (S):
ba˘gıntıda e¸szamanlı okuyucular olabilir ama yazıcılar olmamalı
I B¨ut¨un¨u Okuma + Par¸caya Yazma (SIX):
S + IX
I B¨ut¨une Yazma (X):
ba˘gıntıda hi¸cbir e¸szamanlı ¸calı¸sma olmamalı
Kilit ˙Istekleri
kilit uyumluluk matrisi
X SIX IX S IS -
X H H H H H E
SIX H H H H E E
IX H H E H E E
S H H H E E E
IS H E E E E E
Kilit ¨ Oncelikleri
I ¸coklu ¨uzerinde okuma kilidi i¸cin ba˘gıntı ¨uzerinde en az IS
I ¸coklu ¨uzerinde yazma kilidi i¸cin ba˘gıntı ¨uzerinde en az IX
43 / 45
Kilitleme Komutları
Komut
LO CK [ T A B L E ] t a b l e _ n a m e [ IN l o c k _ m o d e MO DE ]
I kilit kipleri:
I ACCESS SHARE
I ROW SHARE
I ROW EXCLUSIVE
I SHARE UPDATE EXCLUSIVE
I SHARE
I SHARE ROW EXCLUSIVE
I EXCLUSIVE
I ACCESS EXCLUSIVE
44 / 45
Kaynaklar
Okunacak: Date
I Chapter 16: Concurrency
45 / 45