Mein Workload ist langsam
Wenn Ihr Workload in DuckDB langsam ist, empfehlen wir die folgenden Prüfungen. Zu jedem Punkt gibt es ausführlichere Anleitungen.
- Haben Sie genug Speicher? DuckDB arbeitet am besten mit 1–4 GB Speicher pro Thread.
- Überbucht das System möglicherweise den Speicher und zwingt das Betriebssystem zum Swappen? Versuchen Sie, die verfügbare Speichermenge gegenüber dem Standard von 80 % des gesamten RAM mit
SET memory_limit = '...';zu senken. Das klingt kontraintuitiv, kann die Abfrageleistung aber manchmal verbessern, besonders in speicherarmen Umgebungen, in denen andere Prozesse wahrscheinlich mehr als 20 % des gesamten Systemspeichers nutzen. - Verwenden Sie eine schnelle Festplatte? Netzwerkangebundene Festplatten (etwa Cloud-Blockspeicher) verlangsamen schreibintensive und größer-als-Speicher-Workloads. Für solche Workloads in Cloud-Umgebungen empfiehlt sich instanzlokaler Speicher (NVMe-SSDs).
- Verwenden Sie Indizes oder Constraints (Primärschlüssel, Unique usw.)? Versuchen Sie nach Möglichkeit, sie zu deaktivieren, das steigert die Lade- und Update-Leistung.
- Verwenden Sie die richtigen Typen? Nutzen Sie z. B.
TIMESTAMP, um DateTime-Werte zu kodieren. - Lesen Sie aus Parquet-Dateien? Falls ja: Haben diese Zeilengruppengrößen zwischen 100k und 1M und Dateigrößen zwischen 100 MB und 10 GB?
- Sieht der Abfrageplan richtig aus? Untersuchen Sie ihn mit
EXPLAIN. - Läuft der Workload parallel? Beobachten Sie das mit
htopoder dem Task-Manager des Betriebssystems. - Nutzt DuckDB zu viele Threads? Versuchen Sie, die Thread-Anzahl zu begrenzen.
Kennen Sie weitere häufige Probleme? Dann klicken Sie unten auf den Link Report content issue und beschreiben Sie sie zusammen mit ihren Workarounds.