Firedac Query hızı neden yavaş nasıl artırabiliriz...?

Yapmak istediğiniz işle ilgili doğru bileşeni bulmak için burayı kullanabilirsiniz. Sadece bulmak için, diğer sorular Programlama forumuna lütfen.
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Cevapla
Kullanıcı avatarı
softdestek
Üye
Mesajlar: 155
Kayıt: 17 Eyl 2010 03:53

Firedac Query hızı neden yavaş nasıl artırabiliriz...?

Mesaj gönderen softdestek »

MS SQL SERVER veritabanı kullanarak yaptığım uygulamada...
SQL Server ManagementStudio içinde query çalıştırdığım zaman hız değerleri
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.

(3387 row(s) affected)

SQL Server Execution Times:
CPU time = 16 ms, elapsed time = 180 ms.
SQL Server parse and compile time:
CPU time = 0 ms, elapsed time = 0 ms.


Fakat aynı query delphide firedac ile çalıştırınca 10s de kayıtları getiriyor..

Firedac setinin query componentinde nasıl bir ayar yaparsak SQL Server ManagementStudio hızı yakalayabililiriz.

Kod: Tümünü seç

Select *
From
  MUHASEBE.FISMASTER Left Outer Join
  MUHASEBE.CARIKODLAR On MUHASEBE.FISMASTER.CARIKOD=MUHASEBE.CARIKODLAR.CARIKOD  AND  MUHASEBE.CARIKODLAR.SUBEKODU=0
where  (MUHASEBE.FISMASTER.YIL=:PYIL)
       AND    
       (MUHASEBE.FISMASTER.FISTURU=:PFISTURU) 
ORDER BY 
  
      MUHASEBE.FISMASTER.FISNO

Firedac query ile çalıştırma kodum

Kod: Tümünü seç

DMODUL.TBLFisMaster.Close;
DMODUL.TBLFisMaster.Prepare;
DMODUL.TBLFisMaster.ParamByName('PYIL').AsInteger:=SPINYIL.Value;
DMODUL.TBLFisMaster.ParamByName('PFISTURU').AsString:='T';
DMODUL.TBLFisMaster.Open;
Not:Gereken tüm alanlar indexli
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Firedac Query hızı neden yavaş nasıl artırabiliriz...?

Mesaj gönderen mkysoft »

Eğer veriyi devexpress gibi bir grid üzerine yüklüyorsanız, auto width/height, sum gibi özellikler performans kaybına neden olur. Bunun için gridlerin render işlemini kayıtlar yüklendikren sonra yapmakta yarar var.
Kullanıcı avatarı
softdestek
Üye
Mesajlar: 155
Kayıt: 17 Eyl 2010 03:53

Re: Firedac Query hızı neden yavaş nasıl artırabiliriz...?

Mesaj gönderen softdestek »

Maalesef devexpress cxgrid kullanıyorum kaliteli diye ama filter özelliğinin güzelliklerinden dolayı fakat programı çok şişiriyor.. Grid modu güzel fakat onda da kayıtlar full yüklenmediği için filter mod sorunu var...Başka bir grid araştıyorum bakalım bulabilecekmiyim...Tavsiye ettiğiniz bir grid varmı filter mod özelliği güzel ve pratik çalışan...ve colonları kolayca son kullanıcının gösterip gizleyebileceği...
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: Firedac Query hızı neden yavaş nasıl artırabiliriz...?

Mesaj gönderen mkysoft »

devexpress'de remote filter ver mı yok mu emin değilim ancak parçalı yükleme desteği olması lazım. Yani sorguyu grid oluşturuyor ve sonraki sayfa demeden dataları yüklemiyor. Tabi bu durumda sum özelliğini kullanamıyordunuz (belki şimdi yapılmıştır)

Dediğim gibi grid'i datasourceını boş bırakın. Kayıtlar yüklendikten sonra atama yapın, fark edecektir. Bunun başka bir yolu daha vardı ancak kullanmayalı yıllar oldu unutmuşum.

Devexpress güzel bir bileşen seti, bu özelliklere kullanıcınız alıştıysa bırakmanız mümkün değil.
Kullanıcı avatarı
csunguray
Üye
Mesajlar: 855
Kayıt: 09 Ara 2006 05:08
Konum: Adana
İletişim:

Re: Firedac Query hızı neden yavaş nasıl artırabiliriz...?

Mesaj gönderen csunguray »

Kod: Tümünü seç

try
  cxGrid1DBTableView1.BeginUpdate;
  DMODUL.TBLFisMaster.DisableControls;
  DMODUL.TBLFisMaster.Close;
  DMODUL.TBLFisMaster.Prepare;
  DMODUL.TBLFisMaster.ParamByName('PYIL').AsInteger := SPINYIL.Value;
  DMODUL.TBLFisMaster.ParamByName('PFISTURU').AsString := 'T';
  DMODUL.TBLFisMaster.Open;
finally
  DMODUL.TBLFisMaster.EnableControls;
  cxGrid1DBTableView1.EndUpdate;
end;
C. Sunguray
csunguray at netbilisim.kom
Net Bilişim Hizmetleri

Sıradan her programcı bilgisayarın anlayabileceği kodlar yazabilir.
Sadece iyi programcılar insanların da anlayabileceği kodlar yazarlar.
Martin Fowler (http://martinfowler.com/)
edo
Üye
Mesajlar: 40
Kayıt: 05 Haz 2005 11:12

Re: Firedac Query hızı neden yavaş nasıl artırabiliriz...?

Mesaj gönderen edo »

3-4bin kayıt hiç bir şey değil. Bu sorunun devexpress'in Grid'i ile doğrudan alakalı olduğunu sanmıyorum. Eğer master/detail şeklinde bağlı ya da datasource/dataset'in afterscroll gibi bir event'inde yazılı kodlarınız varsa cxGrid'in filtreleri doldurmak vs gibi (DevExpress'in dolaylı bir etkisinden dolayı) nedenler ile Query'nin tüm kayıtlarını teker teker gezmesinden kaynaklı bir sorun yaşıyor olabilirsiniz.

Öncelikle bunu kontrol etmenizi tavsiye ederim. Boş bir form'un üzerinde sadece cxGrid ve bağlı olduğunu bağlantı nesnelerinin olduğu yeni bir projede test etmenizi tavsiye ederim.

İyi çalışmalar
Cevapla