- 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/synchronousdeaktiviert, 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.