Beheben des Überlaufens des Arbeitsspeichers¶
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;
Optionen für das Beheben des Überlaufens des Arbeitsspeichers¶
Wenn das Überlaufen des Arbeitsspeichers das Problem ist, können Sie Ihr bestehendes Warehouse in ein Snowpark-optimiertes Warehouse umwandeln, das im Vergleich zu einem Standard-Warehouse 16 Mal mehr Arbeitsspeicher pro Knoten und 10 Mal mehr lokalen Cache bietet. Obwohl ein größeres Warehouse auch mehr Arbeitsspeicher zur Verfügung hat, benötigt eine Abfrage möglicherweise nicht die erweiterten Computeressourcen.
Wenn Sie versuchen möchten, den Speicherüberlauf einer Abfrage zu beheben, ohne das Warehouse, in dem sie ausgeführt wird, anzupassen, verwenden Sie das Query Profile, um zu ermitteln, welche Operationsknoten das Überlaufen verursachen.
Hinweise zu Kosten¶
Wenn eine Abfrage zusätzlichen Arbeitsspeicher ohne zusätzliche Verarbeitungsleistung erfordert, ist es kostengünstiger, zu einem Snowpark-optimierten Warehouse zu wechseln, als die Größe des Warehouses zu erhöhen.
Im Folgenden wird der Credit-Verbrauch eines Standard-Warehouses und eines für Snowpark optimierten Warehouses verglichen:
Typ des virtuellen Warehouses |
X-Small |
X |
M |
L |
X-Large |
2X-Large |
3X-Large |
4X-Large |
5X-Large |
6X-Large |
---|---|---|---|---|---|---|---|---|---|---|
Standard |
1 |
2 |
4 |
8 |
16 |
32 |
64 |
128 |
256 |
512 |
Snowpark-optimiert |
k.A. |
k.A. |
6 |
12 |
24 |
48 |
96 |
192 |
384 |
768 |
Umwandeln in ein Snowpark-optimiertes Warehouse¶
Beachten Sie, dass X-Small- und Small-Warehouses nicht in ein Snowpark-optimiertes Warehouse umgewandelt werden können, wenn Sie nicht vorher die Größe erhöhen.
So wandeln Sie ein bestehendes Standard-Warehouse in ein Snowpark-optimiertes Warehouse um:
- Snowsight:
Melden Sie sich bei Snowsight an.
Navigieren Sie zu Admin » Warehouses.
Suchen Sie das Warehouse, und wählen Sie … » Suspend aus. Ein Warehouse muss vor dem Ändern seines Typs angehalten werden.
Wählen Sie … » Edit aus.
Wählen Sie in der Dropdown-Liste Warehouse Type die Option Snowpark-optimized aus.
Wählen Sie Save Warehouse aus.
- SQL:
Verwenden Sie den Befehl ALTER WAREHOUSE, um den Warehouse-Typ zu ändern. Das Warehouse muss vor dem Ändern seines Typs angehalten werden. Beispiel:
ALTER WAREHOUSE SUSPEND; ALTER WAREHOUSE my_analytics_wh SET WAREHOUSE_TYPE='snowpark-optimized';