Optimieren des Warehouse-Cache

Unter diesem Thema wird erklärt, wie ein Warehouse-Eigentümer oder -Administrator den Cache eines Warehouses optimieren kann, um die Performance von Abfragen, die im Warehouse ausgeführt werden, zu verbessern.

Ein aktives Warehouse verfügt über einen Cache mit Tabellendaten, die auf den Abfragen, die im selben Warehouse ausgeführt werden, zugreifen können. Dies kann die Performance nachfolgender Abfragen verbessern, wenn diese aus dem Cache statt aus Tabellen gelesen werden können.

Unter Verwenden von persistent gespeicherten Abfrageergebnissen finden Sie Informationen darüber, wie die Ergebnisse bestimmter Abfragen zwischengespeichert und wiederverwendet werden können.

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.

Suchen von aus dem Cache gescannten Daten

Die folgende Abfrage liefert den Prozentsatz der aus dem Cache gescannten Daten, aggregiert über alle Abfragen und aufgeschlüsselt nach Warehouse.

Wenn Sie Abfragen haben, bei denen das Scannen von Daten aus dem Cache von Vorteil ist (z. B. häufige, ähnliche Abfragen) und der Prozentsatz der aus dem Cache gescannten Daten gering ist, können Sie durch die Optimierung des Cache eine Performance-Steigerung erzielen.

SELECT warehouse_name
  ,COUNT(*) AS query_count
  ,SUM(bytes_scanned) AS bytes_scanned
  ,SUM(bytes_scanned*percentage_scanned_from_cache) AS bytes_scanned_from_cache
  ,SUM(bytes_scanned*percentage_scanned_from_cache) / SUM(bytes_scanned) AS percent_scanned_from_cache
FROM snowflake.account_usage.query_history
WHERE start_time >= dateadd(month,-1,current_timestamp())
  AND bytes_scanned > 0
GROUP BY 1
ORDER BY 5;
Copy

Allgemeine Informationen zum Cache und zum automatischen Anhalten

Die Einstellung zum automatischen Anhalten des Warehouses kann sich direkt auf die Abfrage-Performance auswirken, da der Cache beim Anhalten des Warehouses gelöscht wird. Wenn in einem Warehouse häufige und ähnliche Abfragen ausgeführt werden, ist es möglicherweise nicht sinnvoll, das Warehouse zwischen den Abfragen anzuhalten, da der Cache vor dem Ausführen der nächsten Abfrage gelöscht werden könnte.

Bei der Festlegung des Zeitlimits für das automatische Anhalten können Sie die folgenden allgemeinen Richtlinien anwenden:

  • Bei Aufgaben empfiehlt Snowflake das sofortige Anhalten.

  • Bei DevOps, DataOps und Data Science-Anwendungsfällen empfiehlt Snowflake, das automatische Anhalten auf etwa 5 Minuten einzustellen, da der Cache für Ad-hoc- und einmalige Abfragen nicht so wichtig ist.

  • Für Abfrage-Warehouses, z. B. BI- und SELECT-Anwendungsfälle, empfiehlt Snowflake, das automatische Anhalten auf mindestens 10 Minuten einzustellen, um den Cache für die Benutzer zu erhalten.

Hinweise zu Kosten

Beachten Sie, dass ein aktives Warehouse auch dann Credits verbraucht, wenn es keine Abfragen verarbeitet. Achten Sie darauf, dass die Einstellung für das automatische Anhalten auf Ihren Workload abgestimmt ist. Wenn ein Warehouse beispielsweise alle 30 Minuten eine Abfrage ausführt, ist es nicht sinnvoll, die Einstellung für das automatische Anhalten auf 10 Minuten zu setzen. Das Warehouse verbraucht Credits, während es im Leerlauf ist, ohne dass die Vorteile eines Cache genutzt werden können, da dieser vor dem Ausführen der nächsten Abfrage gelöscht wird.

Konfigurieren des automatischen Anhaltens

So ändern Sie, wie viel Zeit vergehen muss, bevor ein Warehouse angehalten und sein Cache gelöscht wird:

Snowsight:
  1. Melden Sie sich bei Snowsight an.

  2. Navigieren Sie zu Admin » Warehouses.

  3. Suchen Sie das Warehouse, und wählen Sie » Edit aus.

  4. Stellen Sie sicher, dass Auto Suspend aktiviert ist.

  5. Geben Sie in das Feld Suspend After (min) die Anzahl der Minuten ein, die vergehen müssen, bevor das Warehouse angehalten wird.

  6. Wählen Sie Save Warehouse aus.

SQL:

Verwenden Sie den Befehl ALTER WAREHOUSE, um das Zeitlimit für das automatische Anhalten zu ändern, das in Sekunden, nicht in Minuten, angegeben wird. Beispiel:

ALTER WAREHOUSE my_wh SET AUTO_SUSPEND = 600;
Copy