Selam Dostlar,
Delphi 7 + Delphi IB Compenentleri + Firebird 1.5
Yazidigim programda kayitlari degistirdikten sonra kaydet deyince Commit yaptigimda baska MDIChild lardaki varolan acik Table lar kapaniyor, ApplyUpdate ve Commitretaining yaptgimda ise Firebird Cache de tutuyor bilgileri ve Dataya direk yazmiyor taki Commit olana kadar. (Bunu test ettim, Commitretaining kesinlikle hemen commit de oldugu gibi Database e yazmiyor yada ben yazdiramadim ???)
Benim sorum su : Birden cok Transaction kullanarak ve yapilan her degisikligi aninda Commit yaparak yazilan bir Programda performans nasil olur ? (ornek : Musteri icin bir , stok icin bir, fatura icin bir Transaction kullanma) Ya da birden cok transaction kullanmanin bir sakincasi olur mu ?
Bir projede bir Transaction kullanarak onu kontrol etmek mi daha iyi ?
Tesekkurler, Kolay Gelsin.
Firebird Commit ve Transaction
Firebird Commit ve Transaction
Okyanus
1- dataları commit yaptığında direkt olarak cache'de tutulduğunu nasıl/nereden anladın? commit ettikten sonra başka bir programla(ibexpert, ibmanager, marathon, vs...) close open ederek dene.
2- transaction'u read committed olarak yarla bir de...
3- benim tavsiyem her kayıt girişi yapılan tablo için bir transaction kullan.
sebebi:
iki tabloya post komutu geçtin. bu iki tablo için de aynı transaction kullandın. birinini commit ettin. doğal olarak transaction 2'sini birden dataya yazdı. şimdi cari tablodaki değişiklikleri rollback yapman ve 2. tabloyuda commit etmen gerekecek. nasıl olacak? mantıken ben açıklamasını bulamadım.
durum bu şekilde...
2- transaction'u read committed olarak yarla bir de...
3- benim tavsiyem her kayıt girişi yapılan tablo için bir transaction kullan.
sebebi:
iki tabloya post komutu geçtin. bu iki tablo için de aynı transaction kullandın. birinini commit ettin. doğal olarak transaction 2'sini birden dataya yazdı. şimdi cari tablodaki değişiklikleri rollback yapman ve 2. tabloyuda commit etmen gerekecek. nasıl olacak? mantıken ben açıklamasını bulamadım.
durum bu şekilde...
Arkadaslar cevaplar icin cok tesekkurler,
gkimirti icin;
Daha once Commit, Commitretaining, Transaction ve IBDataset ile ilgili tum mesajlari usenmeden okudum. Mesajlarin cogunlugunda Commit yerine Commitretaining ve ApplyUpdate önerilmis, program kapatilirken Commit yapilmasi tavsiye edilmis. Ama ben commit le kullanmak istiyorum, cunku yapilan degisikligin hemen Cache de tutulmadan dataya yazilmasini istiyorum. Bircok Database de boyle enazindan. Ama commit de o anki acik IBDataseti kapatiyor ??? (active yapinca sorun olmuyor)
csyasar icin;
Commitretaining i nasil test ettim ? Bir kayit girdim ApplyUpdate ve Commitretaining yaptim. Bu degisiklikleri bu programda hemen goruyorum. Ama Commit yapmadan ayni tabloya baska programla baglandim o an tabloda Commitretainingle yazilmis olan kaydi goremedim. Sorun network de baska kullanicilar commit olmadan sadece Commitretainingle degisikligi gormuyor??? Transaction'u read committed yaptim ve hersey normal calisiyor. Simdi her tablo icin bir transaction kullanarak ve aninda Commit yaparak calistirdim ve hemen Commit yaptigim icin ikinci calisan program birinci programdaki degisikligi gordu.
Haklisin, roolback veya karisik islemler icin tek transactionla nasil yapacagimi bende cözemedim.
Kolay Gelsin.
gkimirti icin;
Daha once Commit, Commitretaining, Transaction ve IBDataset ile ilgili tum mesajlari usenmeden okudum. Mesajlarin cogunlugunda Commit yerine Commitretaining ve ApplyUpdate önerilmis, program kapatilirken Commit yapilmasi tavsiye edilmis. Ama ben commit le kullanmak istiyorum, cunku yapilan degisikligin hemen Cache de tutulmadan dataya yazilmasini istiyorum. Bircok Database de boyle enazindan. Ama commit de o anki acik IBDataseti kapatiyor ??? (active yapinca sorun olmuyor)
csyasar icin;
Commitretaining i nasil test ettim ? Bir kayit girdim ApplyUpdate ve Commitretaining yaptim. Bu degisiklikleri bu programda hemen goruyorum. Ama Commit yapmadan ayni tabloya baska programla baglandim o an tabloda Commitretainingle yazilmis olan kaydi goremedim. Sorun network de baska kullanicilar commit olmadan sadece Commitretainingle degisikligi gormuyor??? Transaction'u read committed yaptim ve hersey normal calisiyor. Simdi her tablo icin bir transaction kullanarak ve aninda Commit yaparak calistirdim ve hemen Commit yaptigim icin ikinci calisan program birinci programdaki degisikligi gordu.
Haklisin, roolback veya karisik islemler icin tek transactionla nasil yapacagimi bende cözemedim.
Kolay Gelsin.
Okyanus