10 pontos por xguru 2021-07-19 | Ainda não há comentários. | Compartilhar no WhatsApp
  • Resumo das tentativas feitas para gerar rapidamente um DB de teste de grande porte

→ o melhor resultado atual é 100 milhões em 33 segundos (com base em um MBP 2019)

  • Loop com código Python: 10 milhões em 15 minutos

→ ajustando o tamanho do batch insert para 100 mil: reduzido para 10 minutos

  • Otimização das configurações do SQLite: desativar journal_mode/synchrounous, ajustar o tamanho do cache, exclusive lock

→ versão com loop: 100 milhões em 10 minutos, versão em batch: 100 milhões em 8,5 minutos

  • Mudança para PyPy: versão em batch reduzida para 100 milhões em 2,5 minutos (3,5x)

  • Reescrito em Rust: versão com loop + otimizações do SQLite, 100 milhões em 3 minutos

→ ao mudar para Prepared Statement e fazer batch insert de 50 linhas por vez, 100 milhões em 34,3 segundos

→ mudando para a versão com threads: 1 thread de escrita, 4 threads de dados. 32,37 segundos

  • Ao mudar o armazenamento do DB SQLite para :memory:, ganhou mais 2 segundos e ficou em 29 segundos

→ parece que leva 2 segundos para fazer flush de 100 milhões de rows

  • Próximas tentativas (para chegar a 1 bilhão em 1 minuto)

→ fazer profiling

→ testar uma versão multiprocessos para usar 4 cores

→ escrever em Go e executar com o GC desativado

→ ideia maluca: aprender o formato de arquivo do SQLite e gerar diretamente nesse formato

Ainda não há comentários.

Ainda não há comentários.