Şu deadlock'a bir çare medet!

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: Şu deadlock'a bir çare medet!

Mesaj gönderen Kuri_YJ »

Selamlar,

Bence akışınızı bize anlatırsanız size daha fazla yardımcı olabiliriz. Çünkü Yıllardır kullanırım programlarımda ve bir yada iki defa deadlock hatası olan kodlamam oldu, (multi thread bir uygulamaydı) ve mantık hatası nedeniyle deadlock'a düşüyordum. Düzelttim.

Olayı adım adım anlatıp, nerede deadlock yediğinizi söyleyin.

Kolay Gelsin
Adnan
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Re: Şu deadlock'a bir çare medet!

Mesaj gönderen sadettinpolat »

her keypresste neden post ediyorsunuz ?
mimariniz cok yanlis. Commit araliklari minimum olmali diyen arkadas post komutunu da verebildiginiz kadar az veriyor oldugunuzu varsaymistir.

1-post komutu mumkun oldugunca az verilmeli
2-commit araliklari minimum seviyede tutulmali

veri cliente'a cekilir
uzerinde yapilmasi gereken duzenleme islemleri yapilir
transaction acilir
verinin guncel hali post/update edilir
transaction commit edilir. commit isleminden sonra bir hata olusursa ilgili hata kullaniciya gosterilir.

ayni kayit uzerinde ayni anda birden fazla kullanici update islemi yapmaya calisirsa deadlock hatasi almaniz kacinilmazdir.
Oracleda da bu boyledir , db2 ta da boyledir firebirdde de boyledir.
yapinizi gozden gecirmelisiniz.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Re: Şu deadlock'a bir çare medet!

Mesaj gönderen Kuri_YJ »

Şu seminerlerde bu konuya da değineceğim.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Re: Şu deadlock'a bir çare medet!

Mesaj gönderen rsimsek »

İşlemin başında açıyorsunuz post (lar) dan sonra da Commit ediyorsunuz. Post'larda bir sorun, hata, kırılma oluştuğunda veri tabanınızda bazı alanların eklenip hangilerinin eklenmediğini takip etmek istemezsiniz değil mi? Anormallik durumunda da Rollback yapıyorsunuz kafanız rahat ediyor.. :) Transaction olayı ile veri tabanı ile tek taraflı bir iletişim kuruyorsunuz. Siz oradan bilgi alıyorsunuz fakat aksini söylemedikçe her hangi bir şey yazmıyorsunuz. Hata halinde verilerin eksik yazılmasına/silinmesine sebep olmuyor, bu da veri tabanının kirlenmesini önleyip sağlığını koruyor. :idea:

İşlemleri try / except içinde yaparak except bloğunda da Rollback yapıyorsunuz.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla