Clustering automatique

Le clustering automatique est le service Snowflake qui gère de manière transparente et continue tous les reclusterings, au besoin, des tables en cluster.

Notez que, après la définition d’une table en cluster, le reclustering ne démarre pas nécessairement immédiatement. Snowflake n’effectue un reclustering d’une table en cluster que si elle bénéficie de l’opération.

Note

Si le reclustering manuel est toujours disponible dans votre compte, le clustering automatique peut ne pas être encore activé pour votre compte. Pour plus de détails, voir Reclustering manuel — Obsolète.

Dans ce chapitre :

Avantages du clustering automatique

Facilité de gestion

Le clustering automatique élimine le besoin d’effectuer les tâches suivantes :

  • Surveillance de l’état des tables groupées en cluster.

    Au lieu de cela, lorsque DML est exécuté sur ces tables, Snowflake surveille et évalue les tables pour déterminer si elles peuvent bénéficier d’un reclustering et les regroupe automatiquement, au besoin.

  • Désigner des entrepôts dans votre compte à utiliser pour le reclustering.

    Snowflake effectue un reclustering automatique en arrière-plan. Vous n’avez pas besoin de spécifier un entrepôt à utiliser.

Tout ce que vous avez à faire est de définir une clé de clustering pour chaque table (en fonction de vos besoins), et Snowflake gère toute la maintenance future.

Contrôle total

Vous pouvez suspendre et reprendre le clustering automatique d’une table mise en cluster à tout moment en utilisant ALTER TABLE … SUSPEND / RESUME RECLUSTER. Lorsque le reclustering automatique est suspendu pour une table, la table n’est jamais automatiquement remise en cluster, quel que soit son état de clustering et, par conséquent, n’encourt aucun frais de crédit connexes.

Vous pouvez également détruire la clé de clustering d’une table en cluster à tout moment, ce qui empêche tout reclustering ultérieur sur la table.

DML non bloquant

Le clustering automatique est transparent et ne bloque pas les instructions DML émises dans les tables en cours de reclustering.

Efficacité optimale

Avec le clustering automatique, Snowflake gère en interne l’état des tables groupées, ainsi que les ressources (serveurs, mémoire, etc.) utilisées pour toutes les opérations de clustering automatisées. Cela permet à Snowflake d’allouer dynamiquement des ressources en fonction des besoins, ce qui se traduit par un reclustering plus efficace.

En outre, le clustering automatique n’effectue aucun reclustering superflu. Le reclustering n’est déclenché que si/quand la table peut bénéficier de l’opération.

Utilisation du crédit et entrepôts virtuels pour le clustering automatique

Le clustering automatique utilise des crédits Snowflake, mais ne nécessite pas que vous fournissiez un entrepôt virtuel. À la place, Snowflake effectue la gestion en interne et permet une utilisation efficace des ressources pour le reclustering des tables.

Votre compte n’est facturé que pour les crédits réellement consommés par les opérations de clustering automatique sur vos tables groupées.

Important

Après l’activation ou la reprise du clustering automatique sur une table groupée, si cela fait un certain temps que la table n’a pas été regroupée, il se peut que l’activité de clustering se déclenche et que des frais de crédit correspondants soient facturés afin que Snowflake procède au groupement de la table. Une fois que la table est groupée de façon optimale, l’activité de reclustering diminue.

De même, la définition d’une clé de clustering sur une table existante ou la modification d’une clé de clustering sur une table groupée peut déclencher un reclustering et des frais de crédit.

Pour éviter des frais de crédit imprévus, nous vous recommandons de commencer par une ou deux tables sélectionnées et d’observer les frais de crédit associés à la tenue des tables regroupées lorsque le DML est exécuté. Cela vous aidera à établir une base de référence pour le nombre de crédits consommés par une activité de reclustering.

Activation du clustering automatique d’une table

Dans la plupart des cas, aucune tâche n’est requise pour activer le clustering automatique pour une table. Vous définissez simplement une clé de clustering pour la table.

Cependant, la règle ne s’applique pas aux tables créées par clonage (CREATE TABLE … CLONE …) à partir d’une table source qui possède des clés de clustering. La nouvelle table démarre avec la suspension du clustering automatique, même si le clustering automatique de la table source n’est pas suspendu. (Ceci est vrai que la commande CLONE ait cloné la table, le schéma contenant la table ou la base de données contenant la table).

Astuce

Avant de définir une clé de clustering pour une table, prenez en compte les conditions suivantes, susceptibles de provoquer une activité de reclustering (et des frais de crédit correspondants) :

C’est pourquoi nous recommandons de commencer par une ou deux tables sélectionnées et d’évaluer l’impact du clustering automatique sur ces tables. Une fois que vous êtes familier avec la façon dont le clustering automatique effectue le reclustering, vous pouvez alors définir des clés de clustering pour vos autres tables.

Pour plus d’informations sur le choix des clés de clustering optimales, voir Stratégies de sélection des clés de clustering.

Pour ajouter un clustering à une table, vous devez également disposer des privilèges USAGE ou OWNERSHIP sur le schéma et la base de données qui contiennent la table.

Affichage du statut du clustering automatique d’une table

Vous pouvez utiliser SQL pour déterminer si le clustering automatique est activé pour une table :

La colonne AUTO_CLUSTERING_ON de la sortie affiche le statut du clustering automatique pour chaque table, qui permet de déterminer s’il faut suspendre ou reprendre le clustering automatique pour une table donnée.

De plus, la colonne CLUSTER_BY (SHOW TABLES) ou la colonne CLUSTERING_KEY (vue TABLES) affiche la ou les colonnes définies comme clé(s) de clustering pour chaque table.

Suspension du clustering automatique d’une table

Pour suspendre le clustering automatique d’une table, utilisez la commande ALTER TABLE avec une clause SUSPEND RECLUSTER. Par exemple :

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

Reprise du clustering automatique d’une table

Pour reprendre le clustering automatique pour une table groupée, utilisez la commande ALTER TABLE avec une clause RESUME RECLUSTER. Par exemple :

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

Astuce

Avant de reprendre le clustering automatique sur une table groupée, tenez compte de ce qui suit, ce qui peut entraîner une activité de reclustering (et des frais de crédit correspondants) :

  • La table n’a pas subi un clustering optimal (p. ex. un DML significatif a été effectué sur la table depuis son dernier reclustering).

  • La clé de clustering sur la table a été modifiée.

Pour plus de détails, voir Micro-partitions et clustering de données et Clés de clustering et tables en cluster.

Affichage du coût du clustering automatique

Le clustering automatique consomme des crédits car il utilise des ressources de calcul sans serveur pour la maintenance automatisée en arrière-plan de chaque table clusterisée, y compris le clustering initial et le reclustering si nécessaire. Pour savoir combien de crédits par heure de calcul sont consommés par le clustering automatique, reportez-vous au « Tableau des crédits de fonctionnalité sans serveur » dans le tableau de consommation des services Snowflake.

Les utilisateurs avec les privilèges adéquats peuvent voir le coût du clustering automatique en utilisant Snowsight, Classic Console, ou SQL :

Snowsight:

Select Admin » Cost Management.

Classic Console:

Cliquez sur Account Onglet Compte » Billing & Usage.

Le coût du clustering automatique apparaît sous la forme d’un entrepôt Snowflake séparé nommé Logo Snowflake en bleu (sans texte) AUTOMATIC_CLUSTERING.

SQL:

Interrogez l’un des éléments suivants :

  • la fonction de table AUTOMATIC_CLUSTERING_HISTORY (dans Schéma d’information de Snowflake).

  • Vue AUTOMATIC_CLUSTERING_HISTORY (dans Account Usage).

    Les requêtes suivantes peuvent être exécutées sur la vue AUTOMATIC_CLUSTERING_HISTORY :

    Requête : historique des coûts du clustering automatique (par jour, par objet)

    Cette requête fournit une liste des tables avec clustering automatique et le volume de crédits consommés via le service au cours des 30 derniers jours, ventilés par jour. Toute irrégularité dans la consommation de crédit ou une consommation constamment élevée sont des signaux d’alerte qui entraînent la nécessité d’une investigation plus profonde.

    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

    Requête : historique du clustering automatique & moyenne sur plusieurs jours

    Cette requête montre les crédits quotidiens moyens consommés par le clustering automatique groupés par semaine au cours de la dernière année. Elle peut aider à identifier les anomalies dans les moyennes quotidiennes sur l’année, ce qui vous permet d’enquêter sur les pics ou les changements inattendus dans la consommation.

    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

Note

Les moniteurs de ressources permettent de contrôler l’utilisation du crédit d’entrepôt virtuel. Cependant, vous ne pouvez pas les utiliser pour contrôler l’utilisation du crédit pour les entrepôts fournis par Snowflake, y compris l’entrepôt Logo Snowflake en bleu (sans texte) AUTOMATIC_CLUSTERING .