C# SQLite

C#’da SQLite Veritabanına 1 Milyon Kayıt Ekleme (Toplu Kayıt Ekleme)

SQLite’de bir defada bir kayıt eklerseniz, bireysel transaction içine alınıp çalıştırılır. Toplu ekleme işlemlerinizi çok hızlı bir şekilde yapmak isterseniz yine aynı şekilde bir transaction içine alıp kayıt işlemini yapmanız gerekir. Bir kaç kayıt eklemede oluşan performans sorununu fark etmek zor ancak kayıt sayısı onbinleri bulduğunda performans sorunu kendisini gösterecektir.

Bu yazıda 1 milyon kayıt yaklaşık 3 saniye içinde veritabanına ekleyeceğiz. Buradaki 1 milyon kayıt ifadesi iddialı bir ifade fakat çoklu kayıt eklemelerde tek transaction kullanılması performans açısından bir zorunluluk oluşturmaktadır.

Visual Studio çalıştırıldıktan sonra, aşağıdaki gibi Nuget yardımı ile SQLite veritabanı DLL dosyası projeye dahil ediliyor.

 

 

 

Yukarıdaki adımları yaptıktan sonra SQLite kütüphanesi projemizde olacak. Şimdi örnek veritabanını oluşturan kodları yazalım.

 

Örnek veritabanı oluşturulduktan başlıkta yazıldığı gibi 1 milyon kayıt nasıl ekleniyor bakalım. Süre için bir tane StopWatch nesnesi ve ardından veritabanına bağlanıp bir tane de transaction başlatıyoruz. Test için for döngüsü içinde 1 milyonluk bir döngü yapıp kayıtların eklenmesini sağlıyorum. Siz de kendi gerçek verilerinzile test edebilirsiniz.

 

 

İşte projedeki tüm kodlar:

Çıktı:

 

4 Yorum

  • merhaba,

    bu kodu oracle veritabanı için nasıl düzenleyebiliriz. Aynı işlemi oracle veritabanı ile bağlantı kurup yapmak istiyorum
    yardımcı olabilir misiniz?

  • Güzel bir anlatım olmuş benim için çok faydalı oldu.
    Sizden ricam eklediğimiz Bir Milyon satırı nasıl hızlı bir şekilde çekebiliriz birde onu anlatsanız daha faydalı olacaktır.

    • Benim anladığım kadarıyla veritabanı her kayıt ekleme işlemi için sürekli olarak veri transferi yapmakta buradan da veri alışverişi için ciddi bir zaman kaybı yaşanması(benim de geliş sebebim buydu: 10000 kayıt için 10-15 saniye sorunu).
      Transaction başlattığında ise kayıtlar toplu hande gönderilip o şekilde işleniyor sanırım. Kod işe yaradı işem süresi 2.5s civarında oldu.
      Teşekkürler Ahmet hocam..

Yorum yap