33

progressokulu.com Advanced Business Language Slide 8

Embed Size (px)

Citation preview

Bölüm 8 : Kayıt Kilitlerini Yönetmek

Bu dersi tamamladığımız zaman şunları yapabileceksiniz;

• Çok kullanıcılı bir ortam oluşturmak• Devamlılığı ve kayıt kilitlerini açıklamak• Optimistik kilit stratejisini uygulamak• Transaction kapsamı < kayıt kapsamı durumunda devamlılığı artırmak

Çok Kullanıcılı Veritabanı

Veritabanı

Sunucu makineCONNECT sp

orts2000

CONNECT sports2000

CONNECT sports2000

Paylaşılan bellek

Veritabanı broker’ı

Server

Çok Kullanıcılı Veritabanını Başlatmak

Veritabanı

proserve sports2000

Sunucu makine

Paylaşılan bellek

Veritabanı broker’ı

Server

Çok Kullanıcılı Bir Veritabanına Bağlanmak

Veritabanı

Sunucu makine

Paylaşılan bellek

Veritabanı broker’ı

Server

İki İstemci Oturumu Başlatmak

İstemci oturumlarını ikisiyle birlikte çalışacak şekilde ayırın

Çok Kullanıcılı Erişimi Yönetmek

Devamlılık

Veri bütünlüğü

1 Fins 24.00

1 Fins 24.00 1 Fins 24.00

İki kullanıcı da kaydı okuyabilir

Biri kayda eriştiğinde diğeri aynı kayda yazamaz

Varsayılan Kilitleme

Kaydı SHARE-LOCK ile okuma

SHARE-LOCK kilidini bir EXCLUSIVE-LOCK kilidine yükseltme isteği

REPEAT: PROMPT-FOR Customer.CustNum. FIND Customer USING CustNum NO-ERROR. IF AVAILABLE Customer THEN DO: DISPLAY Name Discount CreditLimit.

UPDATE Discount CreditLimit. END.END.

Önerilen Kilitleme

1 Fins 24.00

1 Fins 24.00 1 Fins 24.00

A Kullanıcısı B Kullanıcısı

B kullancısı kaydı okurken NO-LOCK düzeyindedir

A kullanıcısı kaydı değiştirirken EXCLUSIVE-LOCK kilidine sahiptir

Bir Kayıt Kapsamı Ne Anlama Gelir?

Item

forord:

FOR EACH Order WHERE OrderNum < 5:

DISPLAY OrderNum Terms SalesRep. forline:

FOR EACH OrderLine OF Order, EACH ITEM OF OrderLine:

DISPLAY Linenum FORMAT ">9" LABEL "Line#“ Item.Itemnum FORMAT ">>9" LABEL "Item #" Item.ItemName FORMAT "x(10)" Item.Price FORMAT ">>9.99" Qty FORMAT ">>>".

UPDATE Discount FORMAT ">9%".

END. /*forline*/

END. /*forord*/

Order

OrderLine

Kayıt Kapsamını Belirlemek

forord:FOR EACH Order WHERE OrderNum < 5: DISPLAY OrderNum Terms SalesRep. forline: FOR EACH OrderLine OF Order, EACH ITEM OF OrderLine: DISPLAY Linenum FORMAT ">9" LABEL "Line#" Item.Itemnum FORMAT ">>9" LABEL "Item #" Item.ItemName FORMAT "x(10)" Item.Price FORMAT ">>9.99" Qty FORMAT ">>>". UPDATE Discount FORMAT ">9%". END. /*forline*/END. /*forord*/

OrderLine ve Item kayıt kapsamıAyrıca transaction kapsamı

Order kayıt kapsamı

OrderLine

Item

Order

Kayıt Kapsamı ve Transaction Kapsamı

 

Kayıt kapsamı transaction kapsamına eşit

Transaction kapsamı daha büyük

Kayıt kapsamı daha büyük

T R T RT

R

Alt-prosedur’ler ve Kayıt KilitlemeTransaction kapsamı/* Main procedure eRunTrans.p */

REPEAT: PROMPT-FOR Customer.CustNum. . . . SET CreditLimit. . . . DO: RUN eUpdOrder.p(. . .). END.END.

Siparişler ve ayrıntılarındaki tüm kilitler bu noktada serbest bırakılır

/* Sub-procedure eUpdOrder.p */. . .FOR EACH Order OF Customer: . . . SET Carrier. FOR EACH OrderLine OF Order: . . . ASSIGN Orderline.Price = ITEM.Price. . . . END.END.

Record Locking Contention

Customer

5 Match Point Tennis JAL 5000

Customer

5 Match Point Tennis JAL 1000

İstemci oturumu 1 İstemci oturumu 2

Uygulama 1 : Kayıt Kapsamı ve Kilitleme Düzeyini Belirleme

Deadlock

1 Fins 24.00

1 Fins 24.00

A kullanıcısı B kullanıcısı

A kullanıcısıSHARE-LOCK

B kullanıcısı SHARE-LOCK

1 Fins 24.00

Kullanıcı kilidi bırakana kadar diğer kullanıcı kayda yazamaz

Kilitleme Stratejileri

Varsayılan kilitleme

1 Fins 24.00

1 Fins 24.00

1 Fins 24.00

SHARE-LOCK SHARE-LOCK

Kötümser kilitleme

1 Fins 36.00

1 Fins 24.00

EXCLUSIVE-LOCK NO-LOCK

İyimser kilitleme

1 Fins 36.00

1 Fins 24.00

NO-LOCK NO-LOCK

EXCLUSIVE-LOCK

1 Fins 24.00

1 Fins 24.00

Varsayılan Kilitleme Metodunu Değiştirme

Customer

5 Match Point Tennis JAL 1000

İstemci oturumu 1

Customer

İstemci oturumu 2

FIND Customer USING CustNum NO-LOCK:

5 Match Point Tennis JAL 1000

İyimser Kilitleme – Optimal Devamlılık

1 Fins 24.00

1 Fins 24.00

A kullanıcısı B kullanıcısı

1 Fins 24.00

Diğer kullanıcı SHARE-LOCK düzeyini bıraktıktan sonra kullanıcının kaydı değiştirmek için EXCLUSIVE-LOCK düzeyine yükselmeye ihtiyacı vardır

A kullanıcısı SHARE-LOCK

B kullanıcısıSHARE-LOCK

İyimser Strateji İçin Best Practise

Kaydı NO-LOCK NO-ERROR ile çekKullanıcı girdisini bekle

Kaydı yeniden NO-LOCK ile çek ya daKaydı RELEASE et

TRANSACTION bloğu: Kaydı EXCLUSIVE-LOCK ile çek Varlığını doğrula Değişiklikleri kontrol et Aksi takdirde transaction’ı geri alDeğişiklikleri kaydet

EXCLUSIVE-LOCK ile FIND CURRENT

PROMPT-FOR Customer.CustNum.FIND Customer USING CustNum NO-LOCK NO-ERROR.. . .. . . FIND CURRENT Customer EXCLUSIVE-LOCK NO-ERROR.

Kullanıcı kaydı DEĞİŞTİREBİLİR

Kullanıcı kaydı DEĞİŞTİREMEZ

Kayıt Değişti mi?

Customer

5 Match Point Tennis JAL 1000

CustomerVeritabanı

Orijinal değerler

Şimdiki değerler(değişmiş olabilir)

IF NOT CURRENT-CHANGED Customer THEN...

5 Match Point Tennis JAL 1000

Kayıt Kullanılabilir Durumda mı?

?

FIND CURRENT Customer EXCLUSIVE-LOCK NO-ERROR. IF AVAILABLE Customer THEN . . .

Şimdi ASSIGN edilebilirKullanıcıyı bilgilendir

EvetHayır

Kayıt Kilit Mi?

FIND CURRENT Customer EXCLUSIVE-LOCK NO-WAIT NO-ERROR.IF LOCKED Customer THEN...

Customer

FIND Customer USING CustNum.Varsayılan kilit =

SHARE-LOCK

5 Match Point Tennis JAL 1000

Kilitlendi mi, Yoksa Silindi Mi?

Kayıt silinmiş

HayırEvet

Kilitli mi?

Yeniden dene?

Evet

Retry bayrağını ayarla

Uygulama 2 : Kaydın Kilitli Olup Olmadığını Öğrenme

İyimser Kilitleme – Tümü Birarada

Kaydı NO-LOCK NO-ERROR ile çekKullanıcı girdisini bekle

Kaydı yeniden NO-LOCK ile çek ya daKaydı RELEASE et

TRANSACTION bloğu: Kaydı EXCLUSIVE-LOCK ile çek Varlığını doğrula Değişiklikleri kontrol et Aksi takdirde transaction’ı geri alDeğişiklikleri kaydet

İyimser Kilitleme – Tümü Birarada

Uygulama 3 : İyimser Kilitlemeyi Kullanmak

Bir BROKER’ı Başlatmak ve Durdurmak

Veritabanı

proserve sports2000

Sunucu makine

Paylaşılan bellek

Broker

Server

proshut sports2000

Paylaşılan bellek

Sunucu makine

Uygulama 4 : Bir Veritabanı BROKER’ını Durdurmak