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:

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:

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                  |
+---------------------------------+------+---------------+-------------+-------+---------+------------+------+-------+----------+----------------+----------------------+
Copy

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                   |
+---------------------------------+------+---------------+-------------+-------+---------+------------+------+-------+----------+----------------+----------------------+
Copy

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 Account tab » Billing & Usage.

Die Kosten für Automatic Clustering werden als ein separates, von Snowflake bereitgestelltes Warehouse mit dem Namen Snowflake logo in blue (no text) 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;
    
    Copy

    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;
    
    Copy

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 Snowflake logo in blue (no text) AUTOMATIC_CLUSTERING-Warehouses, verwenden.