IBdataset.transaction commit mi? transaction.commit mi?
IBdataset.transaction commit mi? transaction.commit mi?
Merhaba,
Aklıma takıldı
IBTransaction1.Commit; ile yada Commitretaining;
IBDataSet1.Transaction.Commit; arasındaki fark sadece bu ilgili IBdataset ait bir transactionların commit olması degilmi ? digerinde ise bütün transctionların.
ne fark var baska
bir exede ikiside aynı sey tek formda form zaten ekran da commit hepsine commit oluyor.
sizin tavsiyeniz nedir.
teşekkür ederim.
Aklıma takıldı
IBTransaction1.Commit; ile yada Commitretaining;
IBDataSet1.Transaction.Commit; arasındaki fark sadece bu ilgili IBdataset ait bir transactionların commit olması degilmi ? digerinde ise bütün transctionların.
ne fark var baska
bir exede ikiside aynı sey tek formda form zaten ekran da commit hepsine commit oluyor.
sizin tavsiyeniz nedir.
teşekkür ederim.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: IBdataset.transaction commit mi? transaction.commit mi?
IBDataSet1.Transaction.Commit, o dataset hangi Transaction nesnesine bağlı ise onun üzerinde çalışır. Tabi IBDataSet1, IBTransaction1 nesnesine bağlı ise bu iki kod arasında fark yok zaten IBDataSet1.Transaction.Commit diyerek onun bağlı olduğu IBTransaction1 nesnesinin Commit metodu çalışacaktır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: IBdataset.transaction commit mi? transaction.commit mi?
s.a.
eğer tek transaction nesnesi ile çalışıyorsanız aralarında fark yoktur.
eğer tek transaction nesnesi ile çalışıyorsanız aralarında fark yoktur.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: IBdataset.transaction commit mi? transaction.commit mi?
a.s.
teşekkür ederim.
teşekkür ederim.
Re: IBdataset.transaction commit mi? transaction.commit mi?
IBdataset.transaction Aut,,FIBTransaction in; IBX bileşenleri ile vakit harcamayın FIBPlus bileşenleri kullanın gerçekten bir harika çift FIBtransaction kullanın,Network kullanımda; Transaction=ReadTransaction--UpdateTransaction=WriteTransaction yapın performansa doyun, FIBDataset kullanın; AutoCommit = true yapın "DeadLock'a düşmeyin.....IBX 'e elveda.
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: IBdataset.transaction commit mi? transaction.commit mi?
autocommit i true yapmakla dead lock ' a dusmeyi nasil engelliyoruz
birde
read ile update transactinlarini ayirmakla nasil bir performans kazanci sagliyoruz ?
birde
read ile update transactinlarini ayirmakla nasil bir performans kazanci sagliyoruz ?
Re: IBdataset.transaction commit mi? transaction.commit mi?
Object Inspector den FIBDatSet1 AutoCommit=true yapıyorsunuz, sonra iki Transaction birini "ReadTransaction" FIBDatasetin ;Transaction olayına diğerini "WriteTransaction" olarak UpdateTransaction olayına atıyorsunuz Transactionlardan biri Okuma, diğeri ise VT'ye yazarken devreye giriyor ve yük azalıyor,ve Clientlerde aynı kayıt üzerine düşüldüğü zaman tablo dead lock'a düşmüyor işlem devam ediyor,AoutoCommit özelliği gerçekten süper tabloda aynı kayıt üzerinde iken,diğer kullanıcılar kayıtlarda değişiklik,kayıt,Silme,Flitreleme yapabiliyorlar, IBX bileşeni IBTransactionda bu özellik yok programcıyı kullanıcıyı aldatmak için kodlarla veya işlemlerle oyalama yapmıyorsunuz.Örnek;
FIBPlus. Master-detail. Step 3. AutoCommit Mode. Work in the context of two transactions for avoiding DEADLOCK
Views: 1947
Step 3. AutoCommit Mode. Work in the context of two transactions for avoiding DEADLOCK.
pFIBDataSet allows to commit the made changes automatically if you set AutoCommit to True. Now after calling the Post method, pFIBDataSet1 will automatically call pFIBTransaction1.CommitRetaining, saving the changes without closing the query. Such approach decreases the probability of Deadlock, which is possible in the presence of long unclosed transactions, in the context of which were made data changes.
But FIBPlus gives another capability, which practically reduces the probability of Deadlock to zero. TpFIBDataSet can work in the context of two transactions, a long one in the context of which the data are only read and a short one, in the context of which there executed all modifying queries.
Let's rename pFIBTransaction1 into ReadTransaction and add another component called WriteTransaction. After this we set UpdateTransaction of pFIBDataSet1 in WriteTransaction. Thus pFIBDataSet1 is connected to both components of TpFIBTransaction at once:
Figure 13.
Now after calling the Post method pFIBDataSet1 will call Commit of WriteTransaction. But taking into account the fact that the data are read in the context of a different transaction (ReadTransaction), it will not cause close of pFIBDataSet1. So using FIBPlus we have a real AutoCommit mode, which decreases the possibility of Deadlock and does not prevent us from seeing all actual record values. You might know that while using BDE in the AutoCommit mode you cannot get real record values without reopening the query.
See the full example code.
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: IBdataset.transaction commit mi? transaction.commit mi?
HBV yazdı:Transactionlardan biri Okuma, diğeri ise VT'ye yazarken devreye giriyor ve yük azalıyor,ve Clientlerde aynı kayıt üzerine düşüldüğü zaman tablo dead lock'a düşmüyor işlem devam ediyor
iki transaction demek firebird icin fazladan yuk demek degil mi? tek transactionla ugrasacagina iki tane transactinla ugrasiyor.
iki transaction kullanmak dead locki nerdeyse sifirlar ama zaten transactinlari kisa tuttugunuz zaman dead lock a dusme ihtimalinizi cok cok azaltmis olursunuz. kayitlar uzerinde gezinirken , filtreleme yaparken dead locka dusuyorsaniz ortada bi yanlis var demektir. ustelik autocommit true modda calismanin cok onemli dezavantajlari vardir. transaction yonetimini sizin elinizden alir fibplus kendisi yonetir. gerekli yerlerde autocommit ozelligi devre disi birakilarak bu dezavantajin giderilmesi gerekir.
son bir not , fibplus bilesenlerinin gelistirilmesinin durduguna dair bazi dedikodular mevcut
http://www.devrace.com/en/support/forum ... 15&TID=547
http://www.devrace.com/en/support/forum ... 15&TID=561
Re: IBdataset.transaction commit mi? transaction.commit mi?
EYVAH EYVAH. Satın almayı düşünüyorduksadettinpolat yazdı:HBV yazdı: son bir not , fibplus bilesenlerinin gelistirilmesinin durduguna dair bazi dedikodular mevcut
http://www.devrace.com/en/support/forum ... 15&TID=547
http://www.devrace.com/en/support/forum ... 15&TID=561


- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: IBdataset.transaction commit mi? transaction.commit mi?
satin almalar hep dusuncede kalirsa adamlarda kapatir dukkani tabiLost Soul yazdı: Satın almayı düşünüyorduk![]()

Re: IBdataset.transaction commit mi? transaction.commit mi?
Ne yani Çift Transaction kullanılması boşunamı? Devrace firması boşunamı uğraşmış? bence çok güzel bir özellik,bunun için döküman bile hazırlamış avantajlarından bahsetmiş.Transactionlardan biri Update yaparken diğeri okuma yapıyor Dataset de daha rahat çalışıyor VT'deki trafik daha rahat işliyor "Lock" durumuna düşüldüğü zaman IBX bileşenlerindeki gibi Networkda Tüm Transactionları,Dataset'i kapatıp-açmak zorunda kalmıyorsunuz pFIBPlus bunu kendi içinde çift transactionla hallediyor ve IBX'de olmayan "AutoCommit" özelliği zaten bunu sağlıyor Tablo otomatik olarak "Commit" oluyor kullanıcı bunu farketmeden çalışmasına devam ediyor,bunu şöylede düşünebiliriz, bir kişiye Kitabı hem okutup hemde aynı anda yazdırmaya benzer..,ayrıca devrace firmasının pFIBbileşenlerine bu özelliği eklemesi bence bir programcı için avantajdır ve elinizden hiç bir şeyide almıyor,aksine daha avantajlı kılıyor ve bağlantıları aynı IBX bileşenleri gibi performans kastımda zaten bu...."AutoCommit " olayı IBObject Table bileşenindede "CommitAction" özelliği ile yapılıyor "lock" olayı yaşanmıyor ve FIBPlus bileşenleri gibi aynı özelliklere sahip...kolay gelsin.
Re: IBdataset.transaction commit mi? transaction.commit mi?
Evet bu önemli bir sorun lock olayı gerçekleştiği zaman bütün pc lerinin kapatması gerekiyor başka türlü lock acılmıyor. Bu da çok kullanıcılı sistemleri sorun olarak karşımıza çıkıyor. Şayet bu olay FIBPlus ile çözülüyorsa denemek lazım ve kullanmak lazım sanırım.
Re: IBdataset.transaction commit mi? transaction.commit mi?
40 terminalde çalışacak bir program üzerindeyim,Bu bileşenleri çift transaction kullanarak;4 tabloda,her bir FIBDataset'e;DefaultTransaction_UpdateTransaction'a iki şer tane bağlıyarak 8 transaction kullandım 4 Terminelde denedim mükemmel çalışıyorlar,tabloda ne bir kasma nede başka bir sorun yok ,kullanıcılar aynı kayıt üzerine denk gelseler bile hiç bir problem olmuyor işleyiş aksamadan devam ediyor,bir terminal bir kayıt üzrinde ekleme vs.. yaparsa diğer kullanıcı o kayıt üzerinde post işlemi olana kadar o kayıtı sadece izliyor ve post olduktan sonra oda erken davranırsa bu sefer o işlem yapıyor,ve kayıt işlemi bitince tekrar kayıtlar arasında listeleme ve diğer işlemleri hiç aksama olmadan süratle yapıyorsunuz,Tablo ve tablolar otomatik olarak "Commit"oluyor.(Reklam olmasın) ama FIBPlus bileşenlerinin Firebird'ile uyumu gerçekten mükemmel,sürekli deneme çalışmaları yapıyorum,Kapa,Aç,"run", tabloda ne bir kasma kitlenme yok.bu bileşenleri herkese tavsiye ederim.
Re: IBdataset.transaction commit mi? transaction.commit mi?
bende fib+ kullanıyorum. Bende sadettinpolat la aynı kanaattayım. DeadLock a düşmenin nedeni tasarım hatasıdır.çözümü yaptım oldu çalışıyor diyorsanız sözüm yok. Ha neden? diye soruyorsanız ozaman ilerleme var demektir 
IBX te autoCommit yok bu zor bir şey değil querynin afterpost event ine QUE_xxx.Transaction.Commit; yazarsan autocommit olur, ha yok ben illaki property olsun kod yazmıyayım isteniyorsa IBX ten bir component türetim afterpost eventi ni miraz alıp bu kodu yazar ve kendi componentinizi kullanırsınız oda commit eder.
Transaction angarya değil bir bilgi bütünlüğünü sağlamak için tasarlanmıştır, siz birde IBObject i inceleyin isterseniz, iki transaction vardır, read write değil karıştırmayın, transactionları da bir grup transaction altına alabilyorsunuz, uzun zaman oldu detaylı hatırlamıyorum.
her kezin bir kod mantığı vardır, ben otomatik işleri sevmem kotrol bende olmalı, nerde kaçak olduğunu müşterim sorunu anlatmaya başladığında gözümün önüne kodlar gelmeli,hemen çözümü üretebilmeliyim.Delphi ile 21 günde database programlama diye bir kitap vardı ilk çıktığında çok zor bulmuştum.onda master detail stok kotrol programı vardı. tek yazılan kod "Application.Terminated;" idi
Devrace batmamıştır inşAllah yeni 6.9.9 u çıkarttılar unicode desteği ile 2010 destekliyor.Batarlarsada kodları sızar dışarıya ve kişiler kendileri eklentiler ile çalışmaya devam edilir.o batarsada mutlaka yerine biri çıkacaktır.Source olduktan sonra bir programcıya sorun olacağını sanmam.Ama kimse almazsa adam neden masraf yapıp geliştirmeye çabalasın değil mi?
Kolay gele

IBX te autoCommit yok bu zor bir şey değil querynin afterpost event ine QUE_xxx.Transaction.Commit; yazarsan autocommit olur, ha yok ben illaki property olsun kod yazmıyayım isteniyorsa IBX ten bir component türetim afterpost eventi ni miraz alıp bu kodu yazar ve kendi componentinizi kullanırsınız oda commit eder.
Transaction angarya değil bir bilgi bütünlüğünü sağlamak için tasarlanmıştır, siz birde IBObject i inceleyin isterseniz, iki transaction vardır, read write değil karıştırmayın, transactionları da bir grup transaction altına alabilyorsunuz, uzun zaman oldu detaylı hatırlamıyorum.
her kezin bir kod mantığı vardır, ben otomatik işleri sevmem kotrol bende olmalı, nerde kaçak olduğunu müşterim sorunu anlatmaya başladığında gözümün önüne kodlar gelmeli,hemen çözümü üretebilmeliyim.Delphi ile 21 günde database programlama diye bir kitap vardı ilk çıktığında çok zor bulmuştum.onda master detail stok kotrol programı vardı. tek yazılan kod "Application.Terminated;" idi
Devrace batmamıştır inşAllah yeni 6.9.9 u çıkarttılar unicode desteği ile 2010 destekliyor.Batarlarsada kodları sızar dışarıya ve kişiler kendileri eklentiler ile çalışmaya devam edilir.o batarsada mutlaka yerine biri çıkacaktır.Source olduktan sonra bir programcıya sorun olacağını sanmam.Ama kimse almazsa adam neden masraf yapıp geliştirmeye çabalasın değil mi?

Kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Re: IBdataset.transaction commit mi? transaction.commit mi?
Ben IBObject ve FIBPlus dedim,önceki mesajı okursanız görürsünüz? zaten şu anda bu konuda en verimli Componentler, lock olayı onlarda yok ,iyiya işte kullanıcıları sıkıcı uyarı mesajlarından kurtarıyorlar ve günümüde çoğu kullanıcılar artık sürekli uyarı çalışma esansında zırt pırt çıkan mesajlar istemiyorlar,mesaj verdirmeden halletsen bu sefer niye bekliyor veya kitleniyor diyor,zaten kullanıcı çoğu mesajları okumuyor okumadan işlem yapmaya kalkıyorlar,sonrada "kardeşim bu ne ya gibi sezlenişlerde bulunuyorlar ve hata gibi görüyorlar,Query'i ise genelde listelemelerde filitrelemelerde kullanılıyorum,programlarda Dataset ve table kullanırım.,zaten Vista(Gerçi Sistemden bu uyarı mesajları basitce halldiliyor ama) bu yüzden tutulmadı sürekli onaylama istiyor kullanıcıları çıldırtıyor,IBX bileşenlerinde IBDataSetde olan DataSet editör olayı FIBDataSet'in içinden otomatik hallediliyor sadece Fields Editörden listeleme yapıyorsunuz, yani FIBPlus ve IBObject bileşenleri kendi içlerinde bir çok olayı kolaylaştırmış,basitleştirmiş,inanın tablodaki işleyiş ile "lock" olayını unutuyorsunuz,dedimya; Devrace bunun için (Deadlock,Lock)döküman hazırlamış,Günümüzde artık program ihtiyacı olanlar her şeyin basitini istiyorlar,bir sürü pencereye girip işlem yapmakda istemiyorlar bu onlar için bir eza oluyor birde uyarı mesajları çıkarsa çıldırıyorlar,ve buna göre program yazdırıyorlar.ve senelerdir takip ediyorum bu lock olayına kesin çözüm bulunabilmiş değil,veya varsa bir bunun için döküman hazırlayın yeni arkadaşlarımızda günlerce uğraşmasın site site dolaşıp kafa patlatmasın?,ve Query dahil herşeyi denedim kesin çözüm yok,ve kod konusunda Bilgisayar ve programcıların göz hastalıklarının artığı günümüzde kafa kaldırmadan kod yazılacağına işi tadında bırakıp az kod kullanmak daha mantıklı hem sağlığınızdan olmuyorsunuz hemde görseliğiniz artıyor. kolay gelsin.