FIREDAC INSERT HIZI (DELPHI XE6)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
softdestek
Üye
Mesajlar: 155
Kayıt: 17 Eyl 2010 03:53

FIREDAC INSERT HIZI (DELPHI XE6)

Mesaj gönderen softdestek »

Delphi XE6 ortamında Firedac componenti kullanarak başka bir databaseden(firebird) verileri MSSQL servera insert ediyorum.
Fakat sorun şu belli bir aşamadan sonra insert hızı çok düşüyor.
Sanırım firedac de ince bir ayar var performansı artırmak için..

Firedac ince performans ayarları konusunda yardımcı olmanız dileğiyle..


while not TBLKaynakFirebird.Eof do begin
ProgressBar1.Position:=ProgressBar1.Position+1;

TBLHedefMSQL.Append;

For sayac:=0 to TBLKaynakFirebird.FieldCount-1 do begin
TBLHedefMSQL.FieldList.Fields[sayac].Value:=TBLKaynakFirebird.FieldList.Fields[sayac].Value;
end;

Application.ProcessMessages;

TBLHedefMSQL.Post;
TBLKaynakFirebird.Next;


end;
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: FIREDAC INSERT HIZI (DELPHI XE6)

Mesaj gönderen tayipk »

merhaba bu şekilde her defasında append ve post kullanacağına insert into ile direk kaydını ekle %50 nin üzerinde daha fazla performans sağladığını görürüsün.
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
makif42
Üye
Mesajlar: 36
Kayıt: 29 Mar 2016 03:14

Re: FIREDAC INSERT HIZI (DELPHI XE6)

Mesaj gönderen makif42 »

tayipk yazdı:merhaba bu şekilde her defasında append ve post kullanacağına insert into ile direk kaydını ekle %50 nin üzerinde daha fazla performans sağladığını görürüsün.
arkadaşlar insertte de append de de

firedac datas 2 object id is not found

hatası alıyorum. yardımcı olur musunuz...
ertank
Kıdemli Üye
Mesajlar: 1653
Kayıt: 12 Eyl 2015 12:45

Re: FIREDAC INSERT HIZI (DELPHI XE6)

Mesaj gönderen ertank »

Merhaba,

Aklıma gelen öneriler aşağıdaki gibi:
- FireDac içinde farklı databaseler arası veri transferi sağlayan BatchMove componentı vardır. Bu component senin kod yazarak yapacağından daha hızlı iş görecektir. İncelemende fayda var.

- Genel olarak bu tür veri transferlerinde belli aralıklar ile Transaction Commit etmelisin. Optimum Commit kayıt sayısını test ederek bulmanda fayda var. Çok yüksek miktarda kayıt commit edildiğinde de MSSQL yavaşlayacaktır. Az miktarda kayıt commit edildiğinde ise performans artışı sağlayamayabilirsin. Deneyerek en uygun kayıt sayısını tespit edebilirsin.

- Eğer MSSQL içine yazılan veri miktarı çok ise disk kaynaklı yavaşlama yaşaman da olasıdır.
Cevapla