Zum Inhalt springen

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.

  1. Haben Sie genug Speicher? DuckDB arbeitet am besten mit 1–4 GB Speicher pro Thread.
  2. Ü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.
  3. 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).
  4. 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.
  5. Verwenden Sie die richtigen Typen? Nutzen Sie z. B. TIMESTAMP, um DateTime-Werte zu kodieren.
  6. Lesen Sie aus Parquet-Dateien? Falls ja: Haben diese Zeilengruppengrößen zwischen 100k und 1M und Dateigrößen zwischen 100 MB und 10 GB?
  7. Sieht der Abfrageplan richtig aus? Untersuchen Sie ihn mit EXPLAIN.
  8. Läuft der Workload parallel? Beobachten Sie das mit htop oder dem Task-Manager des Betriebssystems.
  9. 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.