10 poin oleh xguru 2021-07-19 | Belum ada komentar. | Bagikan ke WhatsApp
  • Merangkum berbagai upaya yang dicoba untuk membuat DB pengujian berukuran besar dengan cepat

→ Saat ini hasil terbaik berada di level 100 juta data dalam 33 detik (berdasarkan MBP 2019)

  • Loop dengan kode Python: 15 menit untuk 10 juta data

→ Mengatur ukuran batch insert menjadi 100 ribu: dipangkas menjadi 10 menit

  • Optimasi pengaturan SQLite: mematikan journal_mode/synchrounous, menyesuaikan ukuran cache, exclusive lock

→ Versi loop 100 juta data dalam 10 menit, versi batch 100 juta data dalam 8,5 menit

  • Beralih ke PyPy: versi batch dipangkas menjadi 2,5 menit untuk 100 juta data (3,5x lebih cepat)

  • Ditulis dengan Rust: versi loop + optimasi SQLite menghasilkan 100 juta data dalam 3 menit

→ Setelah diubah ke Prepared Statement dan batch insert 50 baris sekaligus, 100 juta data dalam 34,3 detik

→ Diubah ke versi thread: 1 thread writer, 4 thread data. 32,37 detik

  • Saat penyimpanan DB SQLite diubah ke :memory:, berkurang 2 detik menjadi 29 detik

→ Tampaknya butuh 2 detik untuk flush 100 juta row

  • Hal-hal berikutnya yang akan dicoba (untuk mencapai 1 miliar data per menit)

→ Mencoba profiling

→ Mencoba versi multiprocess untuk memanfaatkan 4 core

→ Menulis dengan bahasa Go lalu menjalankannya dengan GC dimatikan

→ Ide gila: mempelajari format file SQLite lalu membuatnya langsung sesuai format

Belum ada komentar.

Belum ada komentar.