10 puan yazan xguru 2021-07-19 | Henüz yorum yok. | WhatsApp'ta paylaş
  • Büyük boyutlu bir test veritabanını hızlıca oluşturmak için denenen yöntemlerin özeti

→ Şu anki en iyi seviye: 100 milyon kayıt için 33 saniye (2019 MBP baz alınarak)

  • Python koduyla döngü: 10 milyon kayıt için 15 dakika

→ Batch insert boyutunu 100 bine ayarlayınca: 10 dakikaya indi

  • SQLite ayar optimizasyonu: journal_mode/synchrounous kapatma, cache boyutu ayarı, exclusive lock

→ Döngü sürümü 100 milyon kayıt için 10 dakika, batch sürümü 100 milyon kayıt için 8,5 dakika

  • PyPy’a geçiş: batch sürümü 100 milyon kayıtta 2,5 dakikaya indi (3,5x)

  • Rust ile yazım: döngü sürümü + SQLite optimizasyonuyla 100 milyon kayıtta 3 dakika

→ Prepared Statement’a geçip her seferinde 50 satırlık batch insert yapılınca, 100 milyon kayıtta 34,3 saniye

→ Thread sürümüne geçiş: 1 Writer thread, 4 veri thread’i. 32,37 saniye

  • SQLite DB depolamasını :memory: olarak değiştirince 2 saniye daha kısalıp 29 saniye oldu

→ 100 milyon satırı flush etmenin 2 saniye sürdüğü anlaşılıyor

  • Sırada denenebilecekler (dakikada 1 milyar hedefi için)

→ Profiling yapmak

→ 4 çekirdeği kullanmak için multiprocess sürüm denemek

→ Go ile yazıp GC’yi kapatarak çalıştırmak

→ Çılgın fikir: SQLite dosya formatını öğrenip doğrudan formata uygun üretmek

Henüz yorum yok.

Henüz yorum yok.