10 puntos por xguru 2021-07-19 | Aún no hay comentarios. | Compartir por WhatsApp
  • Resumen de los intentos realizados para generar rápidamente una DB de prueba de gran tamaño

→ el mejor resultado actual es 100 millones en 33 segundos (en una MBP 2019)

  • Bucle con código Python: 15 minutos para 10 millones

→ ajustando el tamaño de inserción por lotes a 100 mil: reducido a 10 minutos

  • Optimización de la configuración de SQLite: desactivar journal_mode/synchrounous, ajustar el tamaño de caché, bloqueo exclusivo

→ versión con bucle: 100 millones en 10 minutos, versión por lotes: 100 millones en 8.5 minutos

  • Cambio a PyPy: la versión por lotes se redujo a 2.5 minutos para 100 millones (3.5 veces más rápido)

  • Escrito en Rust: versión con bucle + optimización de SQLite, 100 millones en 3 minutos

→ al cambiar a Prepared Statement e insertar en lotes de 50 filas, 100 millones en 34.3 segundos

→ cambio a versión con hilos: 1 hilo Writer, 4 hilos de datos. 32.37 segundos

  • Al cambiar el almacenamiento de la DB de SQLite a :memory:, se redujo 2 segundos y quedó en 29 segundos

→ parece que vaciar 100 millones de rows toma 2 segundos

  • Cosas para intentar después (para lograr 1.000 millones por minuto)

→ hacer profiling

→ probar una versión multiproceso para aprovechar 4 núcleos

→ escribirlo en Go y ejecutarlo con el GC desactivado

→ idea loca: aprender el formato de archivo de SQLite y generarlo directamente según ese formato

Aún no hay comentarios.

Aún no hay comentarios.