Firebird 349051 kaıt ekleme tecrubesi

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
AhmetNuri
Üye
Mesajlar: 262
Kayıt: 02 Tem 2007 07:55
Konum: ist
İletişim:

Firebird 349051 kaıt ekleme tecrubesi

Mesaj gönderen AhmetNuri »

Selamun Aleyküm,

Elime bir excel dosyası geçti içinde kara listeye girmiş 349051 şirket vergi nosu var.
Bunu excel den csv ye çevirdim. Ve tablaya kayıt etmeye başladım.
Tabloda sadece vergi no su ve otmatik sayı var.
Makinde Fb 2.2.1 kurulu.
veri tabanı .gdb uzantılı
Ems 3.2 nin import özelliği ile kayıt ekledim.
100 kayıtta bir commit ledim.
Centrino 2.0 ve 2 gb ram var.
Sonuç şöyle
ilk 60 dakikada 197.600 kayıt ekledi
61 dak. 20 saniye de 200.000 kayıda ulaştı.
Fakat 184 dakika 35 saniye de 349.051 e ulaşabildi.
ilk başta saniyede 200 kayıt yaparken sonularda 7 saniyede 100 kayıt atmaya başladı.

Sizce niye bu kadar bir performans düşüşü oldu?

Tablo dll i

Kod: Tümünü seç

/* Table: KOT */

CREATE TABLE KOT (
    KOT_ID INTEGER NOT NULL,
    KOT_VNUMARA DOUBLE PRECISION);



/* Primary keys definition */

ALTER TABLE KOT ADD CONSTRAINT PK_KOT PRIMARY KEY (KOT_ID);


/* Indices definition */

CREATE UNIQUE INDEX PK_KOT ON KOT (KOT_ID);

SET TERM ^ ;

/* Triggers definition */



/* Trigger: AI_KOT_KOT_ID */
CREATE TRIGGER AI_KOT_KOT_ID FOR KOT ACTIVE
BEFORE INSERT POSITION 0
AS
BEGIN
  IF (NEW.KOT_ID IS NULL) THEN
      NEW.KOT_ID = GEN_ID(KOT_KOT_ID_GEN, 1);
END
^


SET TERM ; ^
Ahmet DENİZ
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Firebird 349051 kaıt ekleme tecrubesi

Mesaj gönderen aslangeri »

s.a.
csv dosyasının boyutu nedir. muhtemelen ems dosyayı pars ederken makinayı kasmaya başlamıştır. bunda dolayı bir yavaşlama söz konusu olabilir.
Birde exceldeki tabloyu insert scriptine çevirip dene istersen.
araya sütun ekleyerek sabit stringleri yazacaksın.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: Firebird 349051 kaıt ekleme tecrubesi

Mesaj gönderen Hakan Can »

PRIMARY KEY ve TRIGGER performansı düşürür. En azından TRIGGER'ı iptal edip o işlemi Excel dosyasında yapman daha uygun olur.

PRIMARY KEY tablo büyüdükçe INSERT süresini artıracaktır zorunlu olarak. Ama olması da gerekiyor.

Test amaçlı her ikisi için iptal edip (hem teker teker hem ikisini de iptal edip) sonucu bizimle paylaşabilir misin?

İyi çalışmalar.
AhmetNuri
Üye
Mesajlar: 262
Kayıt: 02 Tem 2007 07:55
Konum: ist
İletişim:

Re: Firebird 349051 kaıt ekleme tecrubesi

Mesaj gönderen AhmetNuri »

csv dosyası 4759 kb
test kısmında fırsat bulunca yapp göndermeye çalışacağım
Ahmet DENİZ
emin_as
Üye
Mesajlar: 559
Kayıt: 01 Eki 2008 10:05
Konum: izmir
İletişim:

Re: Firebird 349051 kaıt ekleme tecrubesi

Mesaj gönderen emin_as »

Performans düşümünün nedeni ems olabilir deneme olsun diye firebird 2.1 ve delphi 2007 ile 400.000 kayıt gönderen küçük bir program yazdım ve 40-45 saniye sürdü.

Programın kaynak kodlarını da ekledim inceleyebilir veya deneyebilirsin.

Ems ile import ederken bu kadar yüksek sayılar görmenin nedeni sanırım, ems import sırasında tablonun tamamını hafızasında tutuyor bu da performans kaybına neden oluyor, ben ibdataset ile veriyi oluştururken, selectsql ile olmadık veriyi seçiyorum ve ibdatasette sadece insert ettigim kısmı tutuyorum. Cvs yi stringliste okutup, parse edersen, çok hızlı bir şekilde import edebilirsin.
Dosya ekleri
testprg.zip
Testdb ve kaynak kodlar
(45.46 KiB) 108 kere indirildi
Cevapla