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
Şu deadlock'a bir çare medet!
Re: Şu deadlock'a bir çare medet!
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: Şu deadlock'a bir çare medet!
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.
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.
Re: Şu deadlock'a bir çare medet!
Şu seminerlerde bu konuya da değineceğim.
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Re: Şu deadlock'a bir çare medet!
İş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. 
İşlemleri try / except içinde yaparak except bloğunda da Rollback yapıyorsunuz.


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