ibdataset1 tabloyu çok geç iptal ediyor.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

ibdataset1 tabloyu çok geç iptal ediyor.

Mesaj gönderen y.kulac »

s.a.

ibdataset1.append;

komutu ile tabloya veri girişi için boş bir alan açılıyor.
diyelimki kayıt işleminden vazgeçilecek.
bunun için bir button koydum ve şu kodlar yazlı.

Kod: Tümünü seç

panel2.visible:= false;
checkbox7.enabled:= true;
checkbox7.Checked:= false;

color:=clbtnface;
ibdataset1.Cancel;
ibdataset1.Close;
btnIptal.Enabled:= false;
btnYeni.Enabled:= True;
btnSil.Enabled:= true;
kullanıcı bu butona basınca ibdataset1.cancel; olayı oluyor.
ama bu işlem tam 15 sn sürüyor.
şu anda kayıt sayısı şu an 16.000
kayıtsayısı çoğaldıkça, ibdataset1.cancel olayı çok daha uzun zaman alıyor.
neden olabilir yada bu işlem daha çabuk nasıl sağlanır.
iyi çalışmalar.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Event larda başka bir şeyler olmasın.? Çünkü böyle bir durum normal değil :roll:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

abi hiç bir şey yok.

ibdataset1.append;

ibdataset1.cancel;

başka bir şey yok.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

trigger lar olabilir mi?
Belki basit bir deneme projesinde aynı işlemi yapmayı deneyebilirsiniz.. :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

trigger ve sp kullanmadım.
tabloda hiç kayıt yokken bir problem yok.
kayıt sayısı arttıkça bunu yapıyor.
yarın bir gün 100.000 kayıta dayanırsa cancel dakikalar alır sanırım. :((
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

aynı sorun
ibdataset1.post;
ibdataset1.delete;
işlemlerinde de var.

çok geç işlem yapıyorlar.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Veri tabanı tasarımını gözden geçirmek lazım.. Böyle bir şeyi duymadım, burada da okumadım :? Bir de farklı bir pc de aynı şeyi denemeni tavsiye edebilirim. Tabloda çok büyük bir alan veya blob alanlar da var mı :?:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

formda çok fazla dbaware component varmı oda yapabilir. disablecontrols enablecontrols yapısı ile denendimi bu olay

[düzeltme]

eğer çok sayıda formu hafızada açık tutuyorsan ve bundlarda hep verilere bağlı ise sen basit bir delete desende tüm vt duyarlı kontroller işlenmek zorundadır. tamam 15 sn çok uzun ama bunlarıda kontrol etmekte fayda var. sadece işinizi gören formlar autocreate olmalıdır
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

formları başlangıçta otomatik create etmiyorum.
formlara ulaşılması gerektiçe manuel create ediyorum.
tablodaki alan sayısı 76 adet.
blob alan yok. alanların % 80'i varchar alan.

ana sayfada biraz görsellik açısından jedi bileşenlerini kullandım.
ama bu sorun kayıt giriş sayfasında oluyor. orda da jedi bileşen paketinden
jvdblookupcombo ve jvdbdateedit kullandım.
başka bir bileşen kullanmadım.

ibdataset1 yerine, ibtable koydum.

Kod: Tümünü seç

ibtable1.append;

ibtable1.cancel;
değişen hiç bir şey yok. yine aynı yavaşlık devam ediyor.
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

Ustaların yanında yakışık almaz ama yukarıda verdiğin kodda önce dataseti cancel yapsan sonra diğerleri yani bileşenlerin visible-enable özellikleri ile oynasan birde veri girişini yaptırdığın dataseti kaldırıp tekrardan oluştursan nasıl olur acaba.

bazen bende oluyor. tabloda yeni alan ekliyorum. dataset e hemen tanıtıyorum ama bazende aynı yolları takip ettiğim halde bir türlü yeni alanı datasete gösteremiyorum ve kaldırıp yeniden oluşturunce durum düzeliyor.

Saygısızlık için özür. Kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

ibdataseti silip tekrar forma koydum ve ayarladım. değişen bir şey yok.
bende

Kod: Tümünü seç

ibdataset1.cancel;
ibdataset1.close;
buradaki kodda ibdataset1.close; olayını kaldırdım.
bu sefer sadece forma ilk ulaşıp ve ibdataset1.append ve sonra
ibdataset1.cancel deyince işlem yine uzun sürdü.

sonraki append ve cancel işlemleri normale döndü.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
bişey soracam tabloda 16.000 kayıt var dedin.
ibdatasetin select sqlinde bu kayıtların hepsini mi seçiyorsun yoksa belli bir şarta uyan kayıtlarımı seçiyorsun.
ibataset in refresh sql indeki kodları silip öyle dene. (tabi varsa)
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
y.kulac
Üye
Mesajlar: 276
Kayıt: 08 Kas 2003 12:03
Konum: serdivan/sakarya

Mesaj gönderen y.kulac »

refresh sql indeki kodları silip denedim. bir değişiklik olmadı.

kayıt girşini ibdataset1 ile yaptırıyorum.
normal olarak select te bütün alanlar seçili olmak zorunda.

ibdataset1.selectsql.add('select * From bilgiler');

buradan hem kayıt girdiriyorum. hemde daha sonra ilgili kayıtı değiştirmek yada güncellemek istediğimde, yine aynı ibdataset1 ile sorgulatıp değişklik yaptırıyorum.

ama yeni kayıt eklenmek istenildiğinde,
ibdataset1.append;
komutu ile boş alan açtırıyorum.
ibdataset1.append komutu gayet hızlı çalışıyor.
sorun (yani yavaşlık) close, post ve delete olaylarında meydana geliyor.

bence sorun ibdataset1 de değil. çünkü ibtable1 de aynı sorunu verdi.

iyi çalışmalar dilerim.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
siz post ettikten sonra tabloyu güncellediği için bi yavaşlık söz konusu oluyor gibime geliyor.
Tabloyu open ederken bir yavaşlama yoksa eğer ayrı bir query ile insert edip tabloyu refresh(close open) yapabilirsiniz.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Cached Update değil değil mi? Ayrıca Transaction bileşen ayarların da normal mı :?:

Transaction bileşeni özellikleri;
TimeOut -> 0
TimeOutAction -> TACommitRetaining
TPBMode -> tpbReadCommitted
TRParams -> ReadCommited seçilip,
write
nowait
rec_version
read_committed
şeklinde ayarlanır.
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla