- बड़े आकार का test DB तेज़ी से बनाने के लिए किए गए प्रयासों का सारांश
→ अभी तक का सबसे अच्छा स्तर: 10 करोड़ पर 33 सेकंड (MBP 2019 के आधार पर)
- Python code से loop: 1 करोड़ पर 15 मिनट
→ batch insert size को 1 लाख करने पर: समय घटकर 10 मिनट
- SQLite settings optimization:
journal_mode/synchrounousबंद करना, cache size समायोजित करना, exclusive lock
→ loop version: 10 करोड़ पर 10 मिनट, batch version: 10 करोड़ पर 8.5 मिनट
-
PyPy पर बदलने से: batch version 10 करोड़ पर 2.5 मिनट तक घटा (3.5x)
-
Rust में लिखने पर: loop version + SQLite optimization के साथ 10 करोड़ पर 3 मिनट
→ Prepared Statement में बदलकर और 50 rows per batch insert करने पर, 10 करोड़ पर 34.3 सेकंड
→ thread version में बदलने पर: 1 writer thread, 4 data threads. 32.37 सेकंड
- SQLite DB storage को
:memory:में बदलने पर 2 सेकंड और घटे, यानी 29 सेकंड
→ लगता है 10 करोड़ row flush करने में 2 सेकंड लगते हैं
- आगे जिन चीज़ों को आज़माने की योजना है (1 मिनट में 1 अरब तक पहुँचने के लिए)
→ profiling करके देखना
→ multi-process version से 4 cores का उपयोग करना
→ Go में लिखकर GC बंद करके चलाना
→ एक पागलपन भरा आइडिया: SQLite file format सीखकर उसी format में सीधे generate करना
अभी कोई टिप्पणी नहीं है.