Tabelas interativas e warehouses interativos do Snowflake

Este tópico apresenta as tabelas interativas e os warehouses interativos do Snowflake. Eles oferecem desempenho de consulta de baixa latência para cargas de trabalho interativas de alta simultaneidade.

Nota

As tabelas interativas agora são compatíveis com consultas de junção.

Visão geral de warehouses interativos e tabelas interativas

A seguir, os novos tipos de objetos do Snowflake que você usa com esse recurso. Você pode esperar um melhor desempenho de consulta ao executar consultas em tabelas interativas usando warehouses interativos.

Warehouse interativo

Um novo tipo de warehouse otimizado para cargas de trabalho interativas de baixa latência.

Um warehouse interativo ajusta o mecanismo do Snowflake especificamente para cargas de trabalho interativas de baixa latência. Ele aproveita metadados adicionais e informações de índice nas tabelas interativas subjacentes para acelerar as consultas. Este tipo de warehouse é otimizado para execução contínua, atendendo a grandes volumes de consultas simultâneas. Todos os warehouses interativos são executados na geração mais recente de hardware.

Tabela interativa

Um novo tipo de tabela do Snowflake, especializada para consultas interativas de baixa latência.

Você obtém os melhores ganhos de desempenho ao consultar essas tabelas por meio de warehouses interativos. As tabelas interativas têm métodos diferentes para ingestão de dados e são compatíveis com um conjunto mais limitado de instruções SQL e operadores de consulta do que as tabelas padrão do Snowflake.

Diagrama mostrando como os usuários trabalham com warehouses interativos e tabelas interativas.

Casos de uso para tabelas interativas

As tabelas interativas do Snowflake são otimizadas para consultas rápidas e simples quando você precisa de respostas consistentes de baixa latência. Os warehouses interativos fornecem os recursos de computação necessários para atender a essas consultas com eficiência. Juntos, eles possibilitam casos de uso como painéis em tempo real, APIs orientadas a dados e atendimento a cargas de trabalho de alta simultaneidade.

As consultas simples que funcionam melhor com tabelas interativas geralmente são instruções SELECT com cláusulas WHERE seletivas, incluindo opcionalmente uma cláusula GROUP BY em algumas dimensões. Evite consultas que envolvam grandes junções e subconsultas. O desempenho de consultas que usam outros recursos, como funções de janela, depende muito dos formatos de dados que você está consultando.

Disponibilidade de região

Tabelas interativas e warehouses interativos estão disponíveis nas seguintes regiões da Amazon Web Services (AWS). Para obter mais informações sobre as regiões do Snowflake, consulte Regiões de nuvens com suporte.

  • us-east-1 - US East (N. Virginia)

  • us-west-2 - US West (Oregon)

  • us-east-2 - US East (Ohio)

  • ap-northeast-1 - Asia Pacific (Tokyo)

  • ap-southeast-2 - Asia Pacific (Sydney)

  • eu-central-1 - EU (Frankfurt)

  • eu-west-1 - EU (Ireland)

Limitações dos warehouses interativos e das tabelas interativas

As seguintes limitações se aplicam a warehouses interativos e tabelas interativas durante o período em versão preliminar. Algumas limitações decorrem de diferenças arquitetônicas entre as tabelas interativas e as padrão do Snowflake; essas limitações são permanentes.

Limitações dos warehouses interativos

  • Os warehouses interativos do Snowflake não são compatíveis com consultas de longa duração. O tempo limite de consulta para comandos SELECT é definido como cinco segundos por padrão. Após cinco segundos, a consulta é cancelada. Você pode reduzir o valor do tempo limite da consulta, mas não pode aumentá-lo. Outros tipos de comandos, como SHOW e INSERT OVERWRITE, não estão sujeitos ao intervalo de tempo limite de cinco segundos.

    Os warehouses interativos não foram projetados para uso com consultas de longa duração. Se uma consulta expira de maneira consistente, isso indica que ela pode não ser adequada para uso com warehouses interativos. Caso contrário, você precisa aplicar algumas técnicas de otimização de desempenho para reduzir o tempo para menos de cinco segundos.

  • Um warehouse interativo está sempre ativo e em execução por padrão. Ele não é suspenso automaticamente quando está ocioso. Embora seja possível suspender manualmente um warehouse interativo, espere uma latência significativa nas consultas quando você retomar o warehouse.

  • Não é possível consultar tabelas padrão do Snowflake a partir de um warehouse interativo. Para consultar tabelas padrão e tabelas interativas na mesma sessão, execute USE WAREHOUSE para alternar para o tipo de warehouse apropriado, dependendo do tipo da tabela.

  • Se um warehouse interativo for multicluster, ele não terá escalonamento automático. Em um warehouse interativo multicluster, mantenha sempre MIN_CLUSTER_COUNT e MAX_CLUSTER_COUNT com o mesmo valor.

  • Não é possível executar comandos CALL para chamar procedimentos armazenados em um warehouse interativo.

  • Não é possível usar o operador de canal ->>. Este operador usa procedimentos armazenados nos bastidores.

  • Atualmente, os warehouses interativos não são compatíveis com replicação. Eles não estão incluídos em grupos de failover e de replicação.

Limitações das tabelas interativas

  • As tabelas interativas não são compatíveis com os seguintes recursos:

    • Comandos de linguagem de manipulação de dados (DML), como UPDATE e DELETE. A única DML que você pode executar é INSERT OVERWRITE.

    • Replicação. Eles não estão incluídos em grupos de failover e de replicação.

  • Atualmente, os insights de consulta não são coletados nem estão disponíveis para consultas executadas em tabelas interativas.

  • Não é possível executar as seguintes operações:

    • Usar uma tabela interativa como origem para uma exibição materializada.

    • Modificar propriedades de uma tabela interativa usando cláusulas ALTER TABLE como ADD COLUMN ou REMOVE COLUMN. A única alteração ALTER TABLE que você pode fazer é renomear a tabela.

    • Usar políticas de mascaramento de dados com uma tabela interativa.

    • Usar políticas de junção com uma tabela interativa.

    • Usar políticas de agregação com uma tabela interativa.

    • Usar políticas de acesso a linhas com uma tabela interativa.

    • Usar fluxos com uma tabela interativa.

    • Criar uma tabela dinâmica com uma tabela interativa como tabela base.

    • Usar a cláusula RESAMPLE para consultas em uma tabela interativa.

Introdução às tabelas interativas

Para começar a usar tabelas interativas, siga as etapas abaixo:

  1. Crie uma tabela interativa usando um warehouse padrão. Para obter mais informações, consulte Criação de uma tabela interativa.

  2. Crie um warehouse interativo. Para obter mais informações, consulte Criação de um warehouse interativo.

  3. Retome o warehouse interativo. Para obter mais informações, consulte Retomada ou suspensão de um warehouse.

  4. Adicione a tabela interativa ao warehouse interativo. Para obter mais informações, consulte Adição de uma tabela interativa a um warehouse interativo.

  5. Inicie a consulta da tabela interativa por meio do warehouse interativo. Para obter mais informações, consulte Consulta a uma tabela interativa.

Trabalhos com tabelas interativas e warehouses interativos

Os procedimentos a seguir explicam como criar e gerenciar todos os objetos necessários para executar consultas usando tabelas interativas. Ao usar esse recurso pela primeira vez, execute estes procedimentos na ordem a seguir.

Criação de uma tabela interativa

A criação de tabelas segue a sintaxe padrão CTAS (CREATE TABLE AS SELECT), com a palavra-chave adicional INTERACTIVE que define o tipo da tabela.

O comando CREATE INTERACTIVE TABLE também requer uma cláusula CLUSTER BY. Especifique uma ou mais colunas na cláusula CLUSTER BY para corresponder às cláusulas WHERE em suas consultas mais urgentes. As colunas especificadas na cláusula CLUSTER BY podem afetar significativamente o desempenho das consultas na tabela interativa. Portanto, escolha as colunas de clustering com cuidado. Para obter mais informações sobre como escolher as melhores colunas de clustering, consulte Chaves de clustering e tabelas clusterizadas.

Nota

Você executa o comando CREATE INTERACTIVE TABLE com um warehouse padrão. Você usa o warehouse interativo apenas em etapas posteriores, para consultar a tabela interativa.

O comando a seguir cria uma tabela interativa contendo as mesmas colunas e dados que uma tabela padrão. A cláusula CLUSTER BY refere-se a uma coluna chamada id da tabela de origem.

CREATE INTERACTIVE TABLE
  IF NOT EXISTS orders
  CLUSTER BY (id)
AS
  SELECT * FROM demoSource;
Copy

Especificação da atualização automática para uma tabela interativa

Para que uma tabela interativa seja atualizada automaticamente usando dados de outra tabela, especifique a cláusula TARGET_LAG com um intervalo. Ao especificar TARGET_LAG, você também deve especificar a cláusula WAREHOUSE e o nome de um warehouse padrão que o Snowflake usará para executar operações de atualização.

O intervalo de tempo para a cláusula TARGET_LAG permite especificar o atraso máximo em termos de segundos, minutos, horas ou dias:

TARGET_LAG = '<num> { seconds | minutes | hours | days }'
Copy

Se você não especificar uma unidade, o número representará segundos. O valor mínimo é de 60 segundos (1 minuto).

Por exemplo, a seguinte instrução CREATE INTERACTIVE TABLE define uma tabela interativa dinâmica que não fica defasada em mais de 20 minutos em relação a uma tabela de origem especificada e usa um warehouse padrão chamado my_standard_warehouse para executar operações de atualização:

CREATE INTERACTIVE TABLE my_dynamic_interactive_table
  CLUSTER BY (c1, c2)
  TARGET_LAG = '20 minutes'
  WAREHOUSE = my_standard_warehouse
AS SELECT c1, SUM(c2) FROM my_source_table GROUP BY c1;
Copy

Para obter mais informações sobre como escolher um tempo de atraso apropriado que equilibre custos e atualização dos dados, consulte Determinação da meta de atraso ideal para uma tabela dinâmica. Considerações semelhantes se aplicam às tabelas interativas, assim como às tabelas dinâmicas.

Criação de um warehouse interativo

Depois de criar uma tabela interativa, consultar essa tabela com desempenho ideal requer um warehouse interativo. Especifique a palavra-chave INTERACTIVE no comando CREATE WAREHOUSE ou CREATE OR REPLACE WAREHOUSE.

Opcionalmente, você pode especificar uma cláusula TABLES com uma lista de nomes de tabelas interativas separados por vírgulas. O uso dessa cláusula associa imediatamente essas tabelas interativas ao warehouse interativo.

O comando a seguir cria um warehouse interativo associado à tabela interativa chamada orders. Neste caso, você pode executar imediatamente um comando USE WAREHOUSE para o warehouse interativo e começar a executar consultas para a tabela interativa:

CREATE OR REPLACE INTERACTIVE WAREHOUSE interactive_demo
  TABLES (orders)
  WAREHOUSE_SIZE = 'XSMALL';
Copy

O comando a seguir cria um warehouse interativo sem tabelas interativas associadas. Neste caso, você executa comandos ALTER WAREHOUSE posteriormente para associar tabelas interativas ao warehouse interativo:

CREATE or REPLACE INTERACTIVE WAREHOUSE interactive_demo
  WAREHOUSE_SIZE = 'XSMALL';
Copy

Após criar um warehouse interativo, ele permanece ativo indefinidamente por padrão. Ao contrário de um modelo tradicional, um warehouse interativo não inclui a opção de suspensão automática se ele ficar ocioso por algum tempo.

Considerações sobre o desempenho das tabelas interativas

As seções a seguir explicam como resolver problemas de desempenho que você pode encontrar devido às características especiais das tabelas interativas e às cargas de trabalho para as quais elas são mais adequadas.

Práticas recomendadas de consulta para warehouses interativos

Os warehouses interativos são otimizados para consultas com cargas de trabalho seletivas. Isso significa que consultas com boa seletividade apresentam melhorias de desempenho substancialmente maiores do que outros tipos de consulta.

Espere mais benefícios de desempenho com warehouses interativos

Espere benefícios de desempenho limitados com warehouses interativos

SELECT col1, col4, AVG(col_x)
  FROM my_table
  GROUP BY col1, col2;
Copy

Esta consulta é altamente seletiva porque requer apenas algumas colunas. O Snowflake pode otimizar o carregamento apenas das colunas necessárias para esta consulta.

SELECT * FROM my_table;
Copy

Esta consulta processa todas as colunas. Embora a consulta seja simples, o Snowflake precisa processar uma grande quantidade de dados, o que pode exceder o tamanho do cache. Mesmo que o conteúdo da tabela caiba no cache, isso deixa menos espaço para armazenar em cache dados de outras consultas, levando a uma menor simultaneidade.

SELECT col1, col2
  FROM my_table
  WHERE
    col_x IN (1,4,7,8)
    AND event_time >=
      DATEADD(hour, -1, CURRENT_TIMESTAMP());
Copy

As condições na cláusula WHERE tornam esta consulta altamente seletiva. A cláusula IN limita os resultados a um número relativamente pequeno de itens, e a comparação de tempo limita ainda mais os dados a um determinado período.

SELECT col1, col2
  FROM my_table
  WHERE
    event_time >=
      DATEADD(day, -365, CURRENT_TIMESTAMP());
Copy

Solicitar dados de um ano inteiro torna esta consulta menos seletiva. Se o seu conjunto de dados for grande, esta consulta poderá processar todas as linhas da tabela.

Outras complexidades, como junções grandes (como a junção de duas tabelas de fatos) ou expressões que exigem alto poder computacional, como expressões regulares, podem resultar em menor simultaneidade devido ao maior uso de recursos computacionais. Consulte Escolha do tamanho para um warehouse interativo para obter informações sobre como otimizar para essas situações.

Práticas recomendadas de layout de dados para tabelas interativas

As tabelas interativas seguem as práticas recomendadas padrão do Snowflake para desempenho. Em particular, as tabelas interativas se beneficiam de uma tabela bem agrupada, uma tabela classificada com base nas mesmas colunas que você está filtrando. Por exemplo, se sua consulta costuma filtrar em uma coluna TIMESTAMP como sale_date, faz sentido usar essa coluna como chave de clustering ao criar a tabela interativa. Por exemplo, você pode criar a tabela interativa da seguinte forma:

CREATE INTERACTIVE TABLE product_sales (<column definitions>) CLUSTER BY (sale_date);
Copy

Dessa forma, as consultas SELECT que filtram em sale_date podem ignorar rapidamente todos os dados irrelevantes e retornar resultados. Por exemplo, a consulta a seguir filtra um intervalo de datas testando a coluna sale_date:

SELECT... WHERE sale_date > '2025-10-24' AND ...
Copy

Para obter mais detalhes sobre como escolher as melhores chaves de clustering, consulte Chaves de clustering e tabelas clusterizadas.

Uso da otimização de pesquisa para pesquisas pontuais

Recomendamos adicionar a otimização de pesquisa quando você realizar consultas de pesquisa pontual em sua tabela interativa. Pesquisas pontuais são consultas que filtram por uma única coluna para recuperar uma ou algumas linhas de dados. Um bom exemplo é WHERE some_id = some_UUID.

Escolha do tamanho para um warehouse interativo

Depois de concluir todas as suas consultas e otimizações de layout, considere dimensionar seu warehouse para atender à demanda. Os warehouses interativos têm tamanhos que variam de XSMALL a 3XLARGE, bem como Warehouses multicluster.

Recomendamos que você comece dimensionando seu warehouse com base no tamanho aproximado do conjunto de dados de trabalho na tabela interativa. O conjunto de dados de trabalho se refere à parte dos dados que é consultada com frequência. Por exemplo, se suas consultas normalmente consultam apenas os dados de vendas dos últimos sete dias, o conjunto de trabalho é a fração da tabela interativa correspondente a esses sete dias.

Isso ocorre porque o warehouse interativo utiliza cache de armazenamento local. Embora os dados de todo o seu conjunto de dados (tabela) estejam sempre acessíveis, o acesso a dados não armazenados em cache acarreta maior latência na primeira leitura.

Escolha um tamanho de warehouse que atenda às necessidades de suas cargas de trabalho. Faça testes com seus dados e carga de trabalho específicos para determinar o tamanho ideal do seu warehouse interativo. Você pode criar um warehouse multicluster interativo. No entanto, atualmente, o número mínimo e máximo de clusters deve ser igual. Ou seja, o warehouse multicluster interativo é dimensionado automaticamente.

Dica

Para um bom desempenho, você não precisa armazenar todo o conjunto de trabalho de suas consultas no cache. Escolha um tamanho de cache suficiente para armazenar seus dados mais acessados, ou seja, os dados das linhas acessadas com frequência.

Recomendamos começar com os seguintes tamanhos de warehouse com base no tamanho do conjunto de dados de trabalho.

Conjunto de trabalho

Tamanho do warehouse

Menos de 500 GB

XSMALL

500 GB a 1 TB

SMALL

1 TB a 2 TB

MEDIUM

2 TB a 4 TB

LARGE

4 TB a 8 TB

XLARGE

8 TB a 16 TB

2XLARGE

Mais de 16 TB

3XLARGE

Solução de problemas de desempenho para tabelas interativas

Problema 1: Minha consulta única está demorando muito

Isso provavelmente ocorre porque sua consulta exige mais recursos computacionais para ser concluída. É possível que sua consulta tenha muito processamento complexo, exigindo, portanto, mais CPUs. Por exemplo, consultas com muitos filtros de expressão regular e cláusulas CASE. Também é possível que suas consultas exijam muita memória, como consultas que realizam muito COUNT(DISTINCT ...). Para reduzir o tempo de execução de uma única consulta, considere um tamanho de warehouse maior. Comece com o tamanho recomendado acima e continue aumentando o tamanho do warehouse até considerar satisfatória a latência de uma única consulta.

Problema 2: Minhas consultas estão demorando muito para serem executadas (alta latência de cauda, ​​alta latência de P95)

Um aumento repentino no tempo de consulta provavelmente se deve ao cache insuficiente. Cada tamanho de warehouse tem um cache de SDD local ​​que usamos para armazenar os dados utilizados ​​mais recentemente. O Snowflake gerencia o cache para armazenar apenas as partes da tabela que são acessadas com frequência. Se suas consultas forem seletivas, aumentar o tamanho do warehouse poderá reduzir a latência de cauda.

Observe também que o warehouse recém-criado leva um tempo para aquecer o cache. O Snowflake aquece proativamente os dados recém-adicionados. Para fazer benchmarks, aguarde um pouco antes de iniciá-los para que o cache tenha tempo de aquecer. A velocidade de aquecimento do cache depende dos tamanhos do warehouse e da tabela. Quanto maior for a tabela interativa, mais tempo o Snowflake levará para aquecer o cache. Por outro lado, quanto maior o tamanho especificado para o warehouse interativo, menor será o tempo de aquecimento.

Problema 3: Minha consulta está em fila ou não consigo atender à simultaneidade de consultas

Você pode expandir seu warehouse definindo os parâmetros MIN_CLUSTER_COUNT e MAX_CLUSTER_COUNT. Dessa forma, pode criar um warehouse interativo com vários clusters. Atualmente, warehouses interativos com vários clusters não são compatíveis com dimensionamento automático. Portanto, especifique o mesmo valor para a contagem mínima e máxima de clusters. Como o aquecimento de um warehouse leva tempo, o dimensionamento manual tende a proporcionar melhor custo-benefício para nossos usuários, mantendo um desempenho previsível.

Adição de uma tabela interativa a um warehouse interativo

Para obter o desempenho ideal de consulta para uma tabela interativa, você deve usar um warehouse interativo.

Antes de consultar a tabela interativa a partir de um warehouse interativo, você deve realizar uma operação única para adicionar a tabela ao warehouse. Caso contrário, você verá o erro «objeto não encontrado» ao executar uma consulta em tal tabela a partir do warehouse interativo. Se você não especificou as tabelas interativas a serem associadas aos warehouses interativos usando a cláusula TABLES em seu comando CREATE INTERACTIVE WAREHOUSE, pode fazer isso posteriormente usando um comando ALTER WAREHOUSE.

O comando a seguir associa a tabela orders ao warehouse interactive_demo. Você pode especificar vários nomes de tabela, separados por vírgulas, com a cláusula ADD TABLES.

ALTER WAREHOUSE interactive_demo ADD TABLES (orders);
Copy

Essa ação inicia o processo de aquecimento do cache. Esse processo pode levar um tempo considerável.

Se a tabela interativa já estiver associada ao warehouse interativo, o comando será executado com sucesso, mas não terá efeito.

Você pode associar uma tabela interativa a vários warehouses interativos.

Remoção de uma tabela interativa de um warehouse interativo

Você pode desanexar uma ou mais tabelas interativas de um warehouse interativo executando um comando ALTER WAREHOUSE com a cláusula DROP TABLES.

ALTER WAREHOUSE interactive_demo DROP TABLES (orders, customers);
Copy

Nota

As tabelas interativas ainda existirão após essa operação. Essa cláusula ALTER WAREHOUSE não é a mesma que executar o comando SQL DROP TABLE.

Retomada ou suspensão de um warehouse

O comando a seguir retoma um warehouse interativo. Você deve fazer isso após criar o warehouse, pois ele é criado em um estado suspenso:

ALTER WAREHOUSE interactive_demo RESUME;
Copy

Você também faz isso para iniciar a execução de consultas por meio do warehouse, caso o tenha suspendido manualmente.

As consultas serão lentas enquanto o cache estiver sendo aquecido após a retomada. Isso pode levar de alguns minutos a uma hora, dependendo da quantidade de dados na tabela.

O comando a seguir suspende um warehouse interativo:

ALTER WAREHOUSE interactive_demo SUSPEND;
Copy

Você pode suspender o warehouse em ambientes de desenvolvimento e teste, em que ele não será utilizado por muitas horas. Em um ambiente de produção, você normalmente usa warehouses interativos para cargas de trabalho que executam muitas consultas simultâneas 24 horas por dia ou onde a baixa latência é crucial para as consultas. Assim, você normalmente não suspende os warehouses interativos que usa em produção. O Snowflake não suspende warehouses interativos automaticamente.

Descarte de um warehouse interativo

Você pode executar o comando DROP WAREHOUSE para remover completamente um warehouse interativo. Descartar um warehouse interativo remove as associações entre esse warehouse e quaisquer tabelas interativas. No entanto, você ainda pode usar outros warehouses interativos para consultar essas mesmas tabelas interativas.

Consulta a uma tabela interativa

Na sua sessão de consulta, certifique-se de que o warehouse para a sua sessão atual seja um warehouse interativo:

USE WAREHOUSE interactive_demo;
Copy

Depois disso, você pode consultar sua tabela interativa normalmente.

Nota

  • Em um warehouse interativo, você só pode consultar tabelas interativas. Para consultar outros tipos de tabelas do Snowflake, como tabelas padrão ou híbridas, primeiro mude para um warehouse padrão.

  • Certos tipos de consultas são especialmente adequados para tabelas interativas. Para obter mais informações, consulte Casos de uso para tabelas interativas.

Considerações sobre custo e faturamento

Os warehouses interativos incorrem em custos de computação quando ativos.

As tabelas interativas incorrem em custos de armazenamento padrão. O preço do armazenamento de tabelas interativas é o mesmo que o das padrão. As tabelas interativas podem ser maiores do que as padrão equivalentes, devido a diferenças na codificação de dados e índices adicionais. O tamanho maior dos dados e os índices são considerados no volume de armazenamento.

Para obter mais informações sobre custos e faturamento de warehouses interativos e tabelas interativas, consulte a tabela de consumo de serviços do Snowflake.

Instruções SQL afetadas

Este recurso introduz alterações nos seguintes comandos SQL do Snowflake: