Automatic Clustering¶
Automatic Clustering ist ein Snowflake-Service, der bei Bedarf das gesamte Reclustering von Clustertabellen nahtlos und kontinuierlich verwaltet.
Beachten Sie, dass nach der Definition einer Clustertabelle das Reclustering nicht unbedingt sofort gestartet wird. Snowflake führt das Reclustering einer geclusterten Tabelle nur durch, wenn die Operation Vorteile bringt.
Bemerkung
Wenn in Ihrem Konto noch manuelles Reclustering verfügbar ist, ist Automatic Clustering für Ihr Konto möglicherweise noch nicht aktiviert. Weitere Details dazu finden Sie unter Manuelles Reclustering – Veraltet.
Unter diesem Thema:
Vorteile von Automatic Clustering¶
Wartungsfreundlichkeit¶
Durch Automatic Clustering müssen keine der folgenden Aufgaben ausgeführt werden:
Überwachen des Status von geclusterten Tabellen.
Wenn DML für diese Tabellen ausgeführt wird, überwacht und bewertet Snowflake stattdessen die Tabellen, um festzustellen, ob sie von einem Reclustering profitieren würden, und führt das Reclustering bei Bedarf automatisch aus.
Festlegen von Warehouses in Ihrem Konto, die für das Reclustering verwendet werden sollen.
Snowflake führt im Hintergrund ein automatisches Reclustering durch, und Sie müssen dafür kein Warehouse angeben.
Sie müssen lediglich einen Gruppierungsschlüssel für jede Tabelle definieren (falls geeignet), und Snowflake verwaltet alle zukünftigen Wartungsarbeiten.
Volle Kontrolle¶
Sie können Automatic Clustering für eine bestimmte Tabelle jederzeit mit ALTER TABLE … SUSPEND / RESUME RECLUSTER anhalten und fortsetzen. Während Automatic Clustering für eine Tabelle angehalten ist, erfolgt für die Tabelle unabhängig von ihrem Clustering-Status kein automatisches Reclustering, und es entstehen daher keine damit verbundenen Credit-Gebühren.
Sie können auch den Gruppierungsschlüssel einer Clustertabelle löschen, wodurch zukünftiges Reclustering in der Tabelle verhindert wird.
Keine Blockierung von DML¶
Automatic Clustering ist transparent und blockiert keine DML-Anweisungen, die auf Tabellen ausgeführt werden, die gerade einem Reclustering unterzogen werden.
Optimale Effizienz¶
Mit Automatic Clustering verwaltet Snowflake intern den Status von gruppierten Tabellen sowie die Ressourcen (Server, Speicher usw.), die für alle automatisierten Clustering-Operationen verwendet werden. Dies ermöglicht Snowflake, Ressourcen dynamisch nach Bedarf zuzuweisen, was ein effizienteres und effektiveres Reclustering ermöglicht.
Mit Automatic Clustering wird auch kein unnötiges Reclustering durchgeführt. Reclustering wird nur ausgelöst, wenn die Tabelle von der Operation profitieren würde.
Credit-Nutzung und Warehouse für Automatic Clustering¶
Beim Automatic Clustering werden zwar Snowflake-Credits verbraucht, Sie müssen aber kein virtuelles Warehouse bereitstellen. Stattdessen sorgt Snowflake intern für eine effiziente Ressourcennutzung beim Reclustering der Tabellen.
Ihr Konto wird nur für die tatsächlichen Credits in Rechnung gestellt, die durch automatische Clustering-Operationen für Ihre geclusterten Tabellen verbraucht werden.
Wichtig
Nach dem Aktivieren oder Fortsetzen von Automatic Clustering für eine gruppierte Tabelle kann es zu Reclustering-Aktivitäten (und entsprechenden Credit-Gebühren) kommen, wenn Snowflake die Tabelle nach einer längeren Zeit ohne Reclustering in einen optimal geclusterten Zustand bringen möchte. Sobald die Tabelle optimal geclustert ist, wird sich die Reclustering-Aktivität auf normalem Niveau einpendeln.
Ebenso kann das Definieren eines Gruppierungsschlüssels in einer vorhandenen Tabelle oder das Ändern des Gruppierungsschlüssels in einer geclusterten Tabelle das Reclustering und damit Credit-Gebühren auslösen.
Um unerwartete Credit-Gebühren zu vermeiden, empfehlen wir, mit einer oder zwei ausgewählten Tabellen zu beginnen und die Credit-Gebühren zu beobachten, die sich aus dem Erhalt des Clustering-Zustands der Tabellen bei Ausführung von DML ergeben. Auf diese Weise können Sie eine Ausgangsbasis für die Anzahl der durch Reclustering verbrauchten Credits bestimmen.
Aktivieren von Automatic Clustering für eine Tabelle¶
In den meisten Fällen sind keine Aufgaben erforderlich, um Automatic Clustering für eine Tabelle zu aktivieren. Sie definieren einfach einen Gruppierungsschlüssel für die Tabelle.
Die Regel gilt jedoch nicht für Tabellen, die durch Klonen (CREATE TABLE … CLONE …) aus einer Quelltabelle mit Gruppierungsschlüssels erstellt wurden. Die neue Tabelle startet mit angehaltenem Automatic Clustering – auch wenn das Automatic Clustering für die Quelltabelle nicht angehalten wurde. (Dies gilt unabhängig davon, ob mit dem CLONE
-Befehl die Tabelle, das Schema, das die Tabelle enthält, oder die Datenbank, die die Tabelle enthält, geklont wurde).
Tipp
Berücksichtigen Sie die folgenden Bedingungen, bevor Sie einen Gruppierungsschlüssel für eine Tabelle definieren, da dies zu Reclustering-Aktivitäten (und damit zu entsprechenden Credit-Kosten) führt:
Die Tabelle ist nicht optimal geclustert. Weitere Details dazu finden Sie unter Mikropartitionen und Daten-Clustering.
Der Gruppierungsschlüssel der Tabelle wurde geändert.
In diesem Fall empfehlen wir, mit einer oder zwei ausgewählten Tabellen zu beginnen und die Auswirkungen von Automatic Clustering auf diese Tabellen zu bewerten. Wenn Sie mit der Reclustering-Funktion von Automatic Clustering vertraut sind, können Sie für Ihre anderen Tabellen Gruppierungsschlüssel definieren.
Weitere Informationen zum Auswählen optimaler Gruppierungsschlüssel finden Sie unter Strategien zur Auswahl von Gruppierungsschlüsseln.
Für das Hinzufügen von Clustering zu einer Tabelle müssen Sie auch über USAGE- oder OWNERSHIP-Berechtigungen für das Schema und die Datenbank verfügen, die die Tabelle enthalten.
Anzeigen des Automatic Clustering-Status für eine Tabelle¶
Sie können SQL verwenden, um anzuzeigen, ob Automatic Clustering für eine Tabelle aktiviert ist:
SHOW TABLES-Befehl.
TABLES-Ansicht (im Snowflake Information Schema).
TABLES-Ansicht (in der freigegebenen Account Usage-Datenbank).
Die Spalte AUTO_CLUSTERING_ON
in der Ausgabe zeigt den Status von Automatic Clustering für jede Tabelle an, anhand dessen bestimmt wird, ob Automatic Clustering für eine bestimmte Tabelle angehalten oder fortgesetzt werden soll.
Darüber hinaus werden in der Spalte CLUSTER_BY
(SHOW TABLES) oder CLUSTERING_KEY
(TABLES-Ansicht) die Spalten angezeigt, die als Gruppierungsschlüssel für jede Tabelle definiert sind.
Anhalten von Automatic Clustering für eine Tabelle¶
Verwenden Sie den Befehl ALTER TABLE mit einer SUSPEND RECLUSTER
-Klausel, um das automatische Clustering für eine Tabelle zu unterbrechen. Beispiel:
ALTER TABLE t1 SUSPEND RECLUSTER; SHOW TABLES LIKE 't1'; +---------------------------------+------+---------------+-------------+-------+---------+------------+------+-------+----------+----------------+----------------------+ | created_on | name | database_name | schema_name | kind | comment | cluster_by | rows | bytes | owner | retention_time | automatic_clustering | +---------------------------------+------+---------------+-------------+-------+---------+------------+------+-------+----------+----------------+----------------------+ | Thu, 12 Apr 2018 13:29:01 -0700 | T1 | TESTDB | MY_SCHEMA | TABLE | | LINEAR(C1) | 0 | 0 | SYSADMIN | 1 | OFF | +---------------------------------+------+---------------+-------------+-------+---------+------------+------+-------+----------+----------------+----------------------+
Fortsetzen von Automatic Clustering für eine Tabelle¶
Verwenden Sie den Befehl ALTER TABLE mit einer RESUME RECLUSTER
-Klausel, um Automatic Clustering für eine gruppierte Tabelle fortzusetzen. Beispiel:
ALTER TABLE t1 RESUME RECLUSTER; SHOW TABLES LIKE 't1'; +---------------------------------+------+---------------+-------------+-------+---------+------------+------+-------+----------+----------------+----------------------+ | created_on | name | database_name | schema_name | kind | comment | cluster_by | rows | bytes | owner | retention_time | automatic_clustering | +---------------------------------+------+---------------+-------------+-------+---------+------------+------+-------+----------+----------------+----------------------+ | Thu, 12 Apr 2018 13:29:01 -0700 | T1 | TESTDB | MY_SCHEMA | TABLE | | LINEAR(C1) | 0 | 0 | SYSADMIN | 1 | ON | +---------------------------------+------+---------------+-------------+-------+---------+------------+------+-------+----------+----------------+----------------------+
Tipp
Bevor Sie Automatic Clustering für eine geclusterte Tabelle fortsetzen, sollten Sie folgende Bedingungen berücksichtigen, die zu einem Reclustering (und entsprechenden Credit-Gebühren) führen können:
Die Tabelle ist nicht optimal geclustert (z. B. wurden auf der Tabelle seit dem letzten Reclustering signifikante DML-Aktivitäten ausgeführt).
Der Gruppierungsschlüssel der Tabelle wurde geändert.
Weitere Details dazu finden Sie unter Mikropartitionen und Daten-Clustering und Gruppierungsschlüssel und geclusterte Tabellen.
Anzeigen der Kosten für Automatic Clustering¶
Beim automatischen Clustering werden Credits verbraucht, da dabei serverlose Computeressource für die automatische Hintergrundwartung jeder geclusterten Tabelle benutzt werden, einschließlich beim erstmaligen Clustering und beim Reclustering nach Bedarf. Weitere Informationen zur Anzahl der vom automatischen Clustering verbrauchten Credits pro Computestunde finden Sie in der „Serverless Feature Credit Table“ unter Snowflake Service Consumption Table.
Benutzer mit den erforderlichen Berechtigungen können die Kosten für das automatische Clustering entweder über Snowsight, die klassische Weboberfläche oder mit SQL anzeigen:
- Snowsight:
Select Admin » Cost Management
- Classic Console:
Klicken Sie auf Account » Billing & Usage.
Die Kosten für Automatic Clustering werden als ein separates, von Snowflake bereitgestelltes Warehouse mit dem Namen AUTOMATIC_CLUSTERING angezeigt.
- SQL:
Führen Sie eine Abfrage durch auf:
Tabellenfunktion AUTOMATIC_CLUSTERING_HISTORY (in Snowflake Information Schema) oder
Ansicht AUTOMATIC_CLUSTERING_HISTORY (in Account Usage)
Die folgenden Abfragen können auf der Ansicht AUTOMATIC_CLUSTERING_HISTORY ausgeführt werden:
Abfrage: Kostenverlauf für Automatic Clustering (nach Tag, nach Objekt)
Diese Abfrage liefert eine Liste von Tabellen mit Automatic Clustering und das Volumen der über den Dienst in den letzten 30 Tagen verbrauchten Credits, aufgeschlüsselt nach Tagen. Unregelmäßigkeiten beim Credit-Verbrauch oder ein gleichbleibend hoher Verbrauch sind Anzeichen, dass weitere Untersuchungen erforderlich sind.
SELECT TO_DATE(start_time) AS date, database_name, schema_name, table_name, SUM(credits_used) AS credits_used FROM snowflake.account_usage.automatic_clustering_history WHERE start_time >= DATEADD(month,-1,CURRENT_TIMESTAMP()) GROUP BY 1,2,3,4 ORDER BY 5 DESC;Abfrage: Automatic Clustering-Historie und Tagesdurchschnitt über m Tage
Diese Abfrage gibt den durchschnittlichen täglichen Credit-Verbrauch durch Automatic Clustering für das letzte Jahr, gruppiert nach Woche zurück. Sie kann dazu beitragen, Anomalien in den Tagesdurchschnittswerten über das Jahr hinweg zu erkennen, sodass Sie Verbrauchsspitzen oder unerwarteten Nutzungsänderungen untersuchen können.
WITH credits_by_day AS ( SELECT TO_DATE(start_time) AS date, SUM(credits_used) AS credits_used FROM snowflake.account_usage.automatic_clustering_history WHERE start_time >= DATEADD(year,-1,CURRENT_TIMESTAMP()) GROUP BY 1 ORDER BY 2 DESC ) SELECT DATE_TRUNC('week',date), AVG(credits_used) AS avg_daily_credits FROM credits_by_day GROUP BY 1 ORDER BY 1;
Bemerkung
Ressourcenmonitore bieten Kontrolle über die Nutzung von Credits für virtuelle Warehouses. Sie können sie jedoch nicht zur Kontrolle der Credit-Nutzung für die von Snowflake bereitgestellten Warehouses, einschließlich des AUTOMATIC_CLUSTERING-Warehouses, verwenden.