Abfragen, die zu groß für den Arbeitsspeicher sind

Unter diesem Thema wird erörtert, wie ein Warehouse-Eigentümer oder -Administrator das Überlaufen des Arbeitsspeichers beheben kann, um die Performance einer Abfrage zu verbessern.

Die Performance verschlechtert sich drastisch, wenn einem Warehouse während der Ausführung einer Abfrage der Arbeitsspeicher ausgeht, weil Speicherbytes auf den lokalen Festplattenspeicher „überlaufen“ müssen. Wenn die Abfrage noch mehr Arbeitsspeicher benötigt, wird sie auf den Remotespeicher beim Cloudanbieter ausgelagert, was die Performance noch weiter verringert.

Bemerkung

Sie müssen Zugriff auf die freigegebene SNOWFLAKE-Datenbank haben, um die unter diesem Thema beschriebenen Diagnoseabfragen ausführen zu können. Standardmäßig verfügt nur die Rolle ACCOUNTADMIN über die erforderlichen Berechtigungen zum Ausführen der Abfragen.

Ermitteln der Abfragen, die in den Speicher überlaufen

Diese Abfrage identifiziert die Top 10 der intensivsten Abfragen in Bezug auf die in den lokalen und Remotespeicher übergelaufenen Bytes.

SELECT query_id, SUBSTR(query_text, 1, 50) partial_query_text, user_name, warehouse_name,
  bytes_spilled_to_local_storage, bytes_spilled_to_remote_storage
FROM  snowflake.account_usage.query_history
WHERE (bytes_spilled_to_local_storage > 0
  OR  bytes_spilled_to_remote_storage > 0 )
  AND start_time::date > dateadd('days', -45, current_date)
ORDER BY bytes_spilled_to_remote_storage, bytes_spilled_to_local_storage DESC
LIMIT 10;
Copy

Empfehlungen

remote Das Auslagern von Daten in den Speicher kann sich negativ auf die Leistung der Abfrage auswirken (insbesondere, wenn die Abfrage in den Remotespeicher ausgelagert werden muss). Um die Auswirkungen zu reduzieren, empfehlen Snowflake Folgendes:

  • Verwenden eines größeren Warehouse (effektives Erhöhen des verfügbaren Arbeitsspeichers bzw. des lokalen Speichers für die Operation)

  • Verarbeiten der Daten in kleineren Batches.

Sie können das Abfrageprofil verwenden, um zu ermitteln, welche Operationsknoten das Überlaufen in den Speicher verursachen. Überlegungen zur Auswahl der geeigneten Warehouse-Größe finden Sie unter Hinweise zu Warehouses.