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;
FIREDAC INSERT HIZI (DELPHI XE6)
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: FIREDAC INSERT HIZI (DELPHI XE6)
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.
Re: FIREDAC INSERT HIZI (DELPHI XE6)
arkadaşlar insertte de append de detayipk 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.
firedac datas 2 object id is not found
hatası alıyorum. yardımcı olur musunuz...
Re: FIREDAC INSERT HIZI (DELPHI XE6)
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.
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.