10 Punkte von xguru 2021-07-19 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Zusammenfassung der Versuche, eine große Test-DB schnell zu erzeugen

→ Der aktuelle Bestwert liegt bei 100 Millionen in 33 Sekunden (auf einem MBP 2019)

  • Schleife mit Python-Code: 15 Minuten für 10 Millionen

→ Batch-Insert-Größe auf 100.000 angepasst: auf 10 Minuten verkürzt

  • SQLite-Einstellungen optimiert: journal_mode/synchronous deaktiviert, Cache-Größe angepasst, Exclusive Lock

→ Schleifen-Version: 100 Millionen in 10 Minuten, Batch-Version: 100 Millionen in 8,5 Minuten

  • Auf PyPy umgestellt: Batch-Version auf 2,5 Minuten für 100 Millionen reduziert (3,5x)

  • In Rust geschrieben: Schleifen-Version + SQLite-Optimierung: 100 Millionen in 3 Minuten

→ Auf Prepared Statement umgestellt und Batch-Inserts zu je 50 Zeilen verwendet: 100 Millionen in 34,3 Sekunden

→ Auf Thread-Version umgestellt: 1 Writer-Thread, 4 Daten-Threads. 32,37 Sekunden

  • SQLite-DB-Speicher auf :memory: umgestellt: 2 Sekunden eingespart, also 29 Sekunden

→ Das Flushen von 100 Millionen Zeilen scheint etwa 2 Sekunden zu dauern

  • Was als Nächstes ausprobiert werden soll (um 1 Milliarde pro Minute zu erreichen)

→ Profiling ausprobieren

→ Eine Multiprocess-Version testen, um 4 Kerne zu nutzen

→ In Go schreiben und dann die GC deaktivieren

→ Verrückte Idee: Das SQLite-Dateiformat lernen und direkt im Format erzeugen

Noch keine Kommentare.

Noch keine Kommentare.