Clustering automático

O Clustering automático é o serviço Snowflake que gerencia de forma contínua e fluida todo o reclustering, conforme necessário, de tabelas clusterizadas.

Note que, depois que uma tabela clusterizada é definida, o reclustering não necessariamente começará imediatamente. O Snowflake só reclusteriza uma tabela clusterizada se ela for beneficiada pela operação.

Nota

Se o reclustering manual ainda estiver disponível em sua conta, o Clustering automático pode ainda não estar habilitado para sua conta. Para obter mais detalhes, consulte Reclustering manual — Obsoleto.

Neste tópico:

Benefícios do Clustering automático

Facilidade de manutenção

O Clustering automático elimina a necessidade de realizar qualquer uma das seguintes tarefas:

  • Monitorar o estado das tabelas clusterizadas.

    Em vez disso, conforme o DML é realizado nestas tabelas, o Snowflake monitora e avalia as tabelas para determinar se elas se beneficiariam do reclustering, e as reclusteriza automaticamente, conforme necessário.

  • Designar warehouses em sua conta para serem utilizados para reclustering.

    O Snowflake realiza o reclustering automático em segundo plano, e você não precisa especificar um warehouse para usar.

Tudo que você precisa fazer é definir uma chave de clustering para cada tabela (se apropriado) e o Snowflake gerencia toda a manutenção futura.

Controle total

Você pode suspender e retomar o Clustering automático para uma tabela clusterizada a qualquer momento usando ALTER TABLE … SUSPEND / RESUME RECLUSTER. Enquanto o Clustering automático estiver suspenso para uma tabela, a tabela nunca é reclusterizada automaticamente, independentemente de seu estado de clustering e, portanto, não incorre em nenhuma cobrança de crédito relacionada.

Você também pode descartar a chave de clustering de uma tabela clusterizada a qualquer momento, o que impede todo reclustering futuro na tabela.

DML sem bloqueio

O Clustering automático é transparente e não bloqueia instruções DML emitidas para tabelas enquanto elas estão sendo reclusterizadas.

Eficiência ideal

Com o Clustering automático, o Snowflake gerencia internamente o estado das tabelas clusterizadas, assim como os recursos (servidores, memória, etc.) utilizados para todas as operações de clustering automatizado. Isto permite ao Snowflake alocar dinamicamente os recursos conforme necessário, resultando em reclustering mais eficiente e eficaz.

Além disso, o Clustering automático não efetua qualquer reclustering desnecessário. O reclustering é acionado somente se/quando a tabela se beneficiaria da operação.

Uso de crédito e warehouses para Clustering automático

O Clustering automático consome créditos do Snowflake, mas não requer que você forneça um warehouse virtual. Em vez disso, o Snowflake gerencia internamente e alcança uma utilização eficiente dos recursos para o reclustering de tabelas.

Sua conta é faturada somente pelos créditos reais consumidos pelas operações de clustering automático em suas tabelas clusterizadas.

Importante

Após habilitar ou retomar o Clustering automático em uma tabela clusterizada, se já faz algum tempo desde que a tabela foi reclusterizada, você pode experimentar uma atividade de reclustering (e as correspondentes cobranças de crédito), pois o Snowflake leva a tabela a um estado clusterizado ideal. Uma vez que a tabela esteja clusterizada de forma ideal, a atividade de reclustering será abandonada.

Da mesma forma, definir uma chave de clustering em uma tabela existente ou alterar a chave de clustering em uma tabela clusterizada pode acionar o reclustering e as cobranças de crédito.

Para evitar qualquer cobrança de crédito inesperada, recomendamos começar com uma ou duas tabelas selecionadas e observar as cobranças de crédito associadas com a manutenção do clustering das tabelas enquanto o DML é realizado. Isto ajudará a estabelecer uma linha de base para o número de créditos consumidos pela atividade de reclustering.

Habilitação do Clustering automático para uma tabela

Na maioria dos casos, não são necessárias tarefas para permitir o Clustering automático para uma tabela. Basta definir uma chave de clustering para a tabela.

Entretanto, a regra não se aplica a tabelas criadas por clonagem (CREATE TABLE … CLONE …) a partir de uma tabela de origem que possui chaves de clustering. A nova tabela começa com o Clustering automático suspenso – mesmo que o Clustering automático para a tabela de origem não esteja suspenso. (Isto é verdade se o comando CLONE clonou a tabela, o esquema que contém a tabela ou o banco de dados que contém a tabela).

Dica

Antes de definir uma chave de chave de clustering para uma tabela, considere as seguintes condições, que podem causar uma atividade de reclustering (e as correspondentes cobranças de crédito):

Como tal, recomendamos começar com uma ou duas tabelas selecionadas e avaliar o impacto do Clustering automático nessas tabelas. Uma vez que você esteja confortável/familiarizado com a forma como o Clustering automático executa o reclustering, pode então definir chaves de clustering para suas outras tabelas.

Para obter mais informações sobre a escolha de chaves de clustering ideais, consulte Estratégias para a seleção de chaves de clustering.

Para adicionar clustering a uma tabela, você também deve ter privilégios USAGE ou OWNERSHIP para o esquema e o banco de dados que contém a tabela.

Visualização do status de Clustering automático para uma tabela

Você pode usar SQL para ver se o Clustering automático está habilitado para uma tabela:

A coluna AUTO_CLUSTERING_ON na saída exibe o status de Clustering automático para cada tabela, que pode ser usado para determinar se deve-se suspender ou retomar o Clustering automático para uma determinada tabela.

Além disso, a coluna CLUSTER_BY (SHOW TABLES) ou CLUSTERING_KEY (exibição TABLES) exibe a(s) coluna(s) definida(s) como a(s) chave(s) de clustering para cada tabela.

Suspensão do Clustering automático para uma tabela

Para suspender o Clustering automático de uma tabela, use o comando ALTER TABLE com uma cláusula SUSPEND RECLUSTER. Por exemplo:

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

Retomada do Clustering automático para uma tabela

Para retomar o Clustering automático para uma tabela clusterizada, use o comando ALTER TABLE com uma cláusula RESUME RECLUSTER. Por exemplo:

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

Dica

Antes de retomar o Clustering automático em uma tabela clusterizada, considere as seguintes condições, que podem causar a atividade de reclustering (e as correspondentes cobranças de crédito):

  • A tabela não está clusterizada de forma ideal (por exemplo, o DML foi realizado na tabela desde o último reclustering).

  • A chave de clustering para a tabela mudou.

Para obter mais detalhes, consulte Micropartições e clustering de dados e Chaves de clustering e tabelas clusterizadas.

Visualização dos custos do clustering automático

O agrupamento automático consome créditos, pois utiliza recursos de computação sem servidor para a manutenção automatizada de fundo de cada tabela clusterizada, incluindo o clustering inicial e o reclustering conforme necessário. Para saber quantos créditos são consumidos pelo clustering automático, consulte a “Tabela de crédito de recursos sem servidor” na Tabela de consumo de serviço do Snowflake.

Os usuários com privilégios adequados podem visualizar o custo do clustering automático usando Snowsight, Classic Console ou SQL:

Snowsight

Select Admin » Cost Management.

Classic Console

Clique em Account Account tab » Billing & Usage

Os custos do clustering automático aparecem como um warehouse separado fornecido pelo Snowflake chamado Snowflake logo in blue (no text) AUTOMATIC_CLUSTERING.

SQL

Consulte um dos seguintes:

  • Função de tabela AUTOMATIC_CLUSTERING_HISTORY (no Snowflake Information Schema).

  • Exibição AUTOMATIC_CLUSTERING_HISTORY (em Account Usage).

    As seguintes consultas podem ser executadas na exibição AUTOMATIC_CLUSTERING_HISTORY:

    Consulta: Histórico de custos de Clustering automático (por dia, por objeto)

    Esta consulta fornece uma lista de tabelas com Clustering automático e o volume de créditos consumidos através do serviço nos últimos 30 dias, separados por dia. Qualquer irregularidade no consumo do crédito ou consumo consistentemente alto são sinais para investigações adicionais.

    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

    Consulta: Histórico de Clustering automático e média de m dias

    Esta consulta mostra a média de créditos diários consumidos pelo Clustering automático agrupados por semana durante o último ano. Ela pode ajudar a identificar anomalias nas médias diárias ao longo do ano, assim você pode investigar mais a fundo os picos ou mudanças inesperadas no consumo.

    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

Nota

Monitores de recursos fornecem controle sobre o uso de crédito do warehouse virtual; no entanto, não é possível usá-los para controlar o uso de crédito para os warehouses fornecidos pelo Snowflake, incluindo o warehouse Snowflake logo in blue (no text) AUTOMATIC_CLUSTERING.