intermediate70 minLição 4 de 19

Domínio 1.4 — Configurando Virtual Warehouses

Mergulho profundo nos Virtual Warehouses do Snowflake: tipos, tamanhos, políticas de escalabilidade, auto-suspend/resume, multi-cluster warehouses e boas práticas para diferentes padrões de workload.

Domínio 1.4 — Configurando Virtual Warehouses

Peso no Exame

O Domínio 1.0 representa ~31% do exame. A configuração de Virtual Warehouses é um dos tópicos mais testados em múltiplos domínios.

ℹ️Note

Esta lição corresponde ao Objetivo de Exame 1.4: Configurar virtual warehouses, incluindo tipos, políticas de escalabilidade, configurações para diferentes casos de uso e boas práticas.


O que é um Virtual Warehouse?

Um Virtual Warehouse (VW) é um cluster de computação on-demand nomeado que executa:

  • Queries SQL (SELECT)
  • Instruções DML (INSERT, UPDATE, DELETE, MERGE)
  • Carregamento de dados (COPY INTO)
  • Código Snowpark

Virtual warehouses são a única fonte de cobrança de computação no Snowflake (além de excessos da Cloud Services). O armazenamento é cobrado separadamente.

sql
-- Criar um warehouse CREATE WAREHOUSE WH_ANALYTICS WAREHOUSE_SIZE = MEDIUM AUTO_SUSPEND = 300 -- suspender após 5 minutos de inatividade AUTO_RESUME = TRUE -- retomar automaticamente ao receber uma query INITIALLY_SUSPENDED = TRUE -- não iniciar imediatamente COMMENT = 'Warehouse de relatórios de BI'; -- Usar um warehouse USE WAREHOUSE WH_ANALYTICS; -- Suspender/retomar manualmente ALTER WAREHOUSE WH_ANALYTICS SUSPEND; ALTER WAREHOUSE WH_ANALYTICS RESUME;

Tipos de Virtual Warehouse

Warehouses Standard (Gen 1 e Gen 2)

Warehouses Standard são o tipo padrão e adequados para a maioria dos workloads SQL:

  • Queries SQL gerais, BI, relatórios, ETL
  • Duas gerações: Gen 1 (legado) e Gen 2 (mais novo, melhor desempenho)
  • Warehouses Gen 2 oferecem melhor custo-benefício para queries intensivas em CPU

Warehouses Snowpark-Optimized (Otimizados para Snowpark)

Warehouses Snowpark-Optimized são projetados para workloads Snowpark intensivos em memória (DataFrames Python/Java/Scala, treinamento de modelos ML):

  • Fornecem 16x mais memória por nó em comparação com warehouses standard
  • Cada nó tem mais RAM para operações Snowpark de grande escala em memória
  • Mais caros por crédito — use somente quando a memória for o gargalo
  • Ideais para: treinamento de modelos ML, ciência de dados de grande escala, transformações Snowpark complexas
sql
CREATE WAREHOUSE WH_TREINAMENTO_ML WAREHOUSE_SIZE = LARGE WAREHOUSE_TYPE = 'SNOWPARK-OPTIMIZED' AUTO_SUSPEND = 600;
RecursoStandardSnowpark-Optimized
Melhor paraSQL, DML, ETLML em Python/Java/Scala
Memória por nóPadrão16x o padrão
Custo por créditoTaxa baseTaxa mais alta
Auto-suspend
Multi-cluster

Dimensionamento de Warehouses

Cada tamanho dobra os recursos de computação (nós) e o consumo de créditos:

TamanhoCréditos/HoraCaso de Uso Típico
X-Small1Desenvolvimento, queries pequenas
Small2ETL pequeno, queries ad-hoc
Medium4ETL moderado, BI padrão
Large8ETL pesado, analytics complexas
X-Large16Datasets muito grandes
2X-Large32Workloads de alto volume de dados
3X-Large64Processamento de altíssimo volume
4X-Large128Workloads massivamente paralelos
5X-Large256Escala extrema (apenas AWS/Azure)
6X-Large512Escala extrema (apenas AWS/Azure)
ℹ️Note

O Snowflake cobra por segundo com um mínimo de 60 segundos por inicialização de warehouse. Suspender e retomar com frequência pode gerar acúmulo de cobranças mínimas. Configure o AUTO_SUSPEND com cuidado.


Auto-Suspend e Auto-Resume

Auto-Suspend

AUTO_SUSPEND define o número de segundos de inatividade antes de o warehouse ser suspenso automaticamente:

sql
-- Suspender após 5 minutos (300 segundos) de inatividade ALTER WAREHOUSE WH_BI SET AUTO_SUSPEND = 300; -- Desativar auto-suspend (warehouse executa até ser suspenso manualmente) ALTER WAREHOUSE WH_BI SET AUTO_SUSPEND = 0;

Boas práticas:

  • Defina auto-suspend baixo (60–300 segundos) para workloads intermitentes ou imprevisíveis
  • Defina auto-suspend mais alto para warehouses com queries frequentes e consecutivas (evita a cobrança mínima de 60 segundos em cada reinicialização)
  • Nunca desative o auto-suspend para warehouses de desenvolvimento ou teste

Auto-Resume

AUTO_RESUME = TRUE significa que o warehouse inicia automaticamente assim que uma query é submetida — o usuário não precisa retomá-lo manualmente:

sql
ALTER WAREHOUSE WH_BI SET AUTO_RESUME = TRUE;
⚠️Warning

Se AUTO_RESUME = FALSE, qualquer query submetida a um warehouse suspenso falhará com erro. Sempre defina AUTO_RESUME = TRUE, a menos que queira controle explícito sobre o ciclo de vida do warehouse.


Escalabilidade: Aumentar o Tamanho vs. Escalar Horizontalmente

O Snowflake oferece duas dimensões de escalabilidade:

100%

Aumentar o Tamanho (Resize)

Altere o tamanho do warehouse quando queries individuais estão lentas (mais recursos por query):

sql
-- Aumentar o tamanho para um ETL pesado noturno ALTER WAREHOUSE WH_ETL SET WAREHOUSE_SIZE = 'X-LARGE'; -- Reduzir o tamanho após o job ALTER WAREHOUSE WH_ETL SET WAREHOUSE_SIZE = 'SMALL';

Quando aumentar o tamanho:

  • Queries estão demorando muito (CPU/memória insuficientes por query)
  • Joins complexos, grandes agregações, ordenações
  • Workloads de baixa concorrência e alto processamento por query

Escalar Horizontalmente (Multi-Cluster)

Adicione mais clusters quando muitas queries concorrentes estão em fila:

⚠️Warning

Multi-cluster warehouses requerem edição Enterprise ou superior.

sql
CREATE WAREHOUSE WH_REPORTING WAREHOUSE_SIZE = MEDIUM MAX_CLUSTER_COUNT = 5 -- até 5 clusters MIN_CLUSTER_COUNT = 1 -- pelo menos 1 sempre ativo SCALING_POLICY = 'ECONOMY'; -- ou 'STANDARD'

Quando escalar horizontalmente:

  • Muitos usuários fazendo queries concorrentemente → queries em fila
  • Dashboards de BI com muitos usuários simultâneos
  • Workloads de alta concorrência onde queries individuais são rápidas

Multi-Cluster Warehouses

Um multi-cluster warehouse inicia automaticamente clusters de computação adicionais quando a demanda de queries excede a capacidade do cluster atual:

Modo single-cluster: [Cluster 1] ← todas as queries ficam na fila aqui Modo multi-cluster: [Cluster 1] [Cluster 2] [Cluster 3] ↑ ↑ ↑ Queries distribuídas entre os clusters

Políticas de Escalabilidade

PolíticaComportamentoMelhor Para
StandardAdiciona clusters imediatamente quando filas são detectadasWorkloads sensíveis à latência
EconomyAguarda até o cluster estar ocupado por 6 minutos antes de adicionarWorkloads com foco em custo

Modo Auto-Scale vs. Modo Maximized

ModoDescriçãoQuando Usar
Auto-ScaleMIN ≠ MAX — clusters sobem/descem dinamicamenteConcorrência variável
MaximizedMIN = MAX — todos os clusters sempre ativosAlta concorrência previsível
sql
-- Auto-scale: 1 a 5 clusters CREATE WAREHOUSE WH_CONCORRENTE WAREHOUSE_SIZE = SMALL MIN_CLUSTER_COUNT = 1 MAX_CLUSTER_COUNT = 5 SCALING_POLICY = STANDARD; -- Maximized: sempre 3 clusters CREATE WAREHOUSE WH_SEMPRE_ATIVO WAREHOUSE_SIZE = MEDIUM MIN_CLUSTER_COUNT = 3 MAX_CLUSTER_COUNT = 3;

Configuração de Warehouse por Caso de Uso

Queries Ad-Hoc

Objetivo: Resposta rápida para queries interativas imprevisíveis de analistas.

sql
CREATE WAREHOUSE WH_ADHOC WAREHOUSE_SIZE = MEDIUM -- potência suficiente para queries ad-hoc típicas AUTO_SUSPEND = 120 -- suspender rapidamente — uso é esporádico AUTO_RESUME = TRUE MAX_CLUSTER_COUNT = 3 -- lidar com picos de usuários concorrentes SCALING_POLICY = STANDARD; -- responder imediatamente à concorrência

Carregamento de Dados (ETL/ELT)

Objetivo: Maximizar o throughput para grandes operações de COPY INTO.

sql
CREATE WAREHOUSE WH_INGEST WAREHOUSE_SIZE = LARGE -- mais nós = mais carregamento paralelo de arquivos AUTO_SUSPEND = 60 -- suspender logo após o lote de carregamento concluir AUTO_RESUME = TRUE MAX_CLUSTER_COUNT = 1; -- carregamento é sobre tamanho, não concorrência
ℹ️Note

Para carregamento, um cluster único maior é melhor do que mais clusters. O Snowflake distribui o carregamento de arquivos entre os nós de um único cluster. Multi-cluster ajuda na concorrência, não no throughput de uma única query.

BI e Relatórios

Objetivo: Resposta consistente e rápida para muitos usuários simultâneos de dashboard.

sql
CREATE WAREHOUSE WH_BI WAREHOUSE_SIZE = SMALL -- queries individuais de BI são tipicamente pequenas AUTO_SUSPEND = 300 AUTO_RESUME = TRUE MIN_CLUSTER_COUNT = 1 MAX_CLUSTER_COUNT = 6 -- escalar horizontalmente para muitos usuários concorrentes SCALING_POLICY = ECONOMY; -- eficiente em custo para workloads estáveis

Resumo de Boas Práticas para Warehouses

CenárioRecomendação
Queries individuais lentasAumentar o tamanho (tamanho maior)
Muitas queries concorrentes em filaEscalar horizontalmente (multi-cluster)
Desenvolvimento/testeTamanho pequeno, auto-suspend 60–120s
Treinamento de modelos ML com SnowparkWarehouse Snowpark-Optimized
ETL em lote noturnoTamanho grande, desativar durante o dia
Equipes diferentesWarehouses dedicados separados
Controle de custosAuto-suspend baixo + Resource Monitor

Questões de Prática

Q1. Uma equipe de BI tem 50 usuários que executam dashboards simultaneamente toda manhã. As queries são rápidas individualmente, mas os usuários experimentam atrasos. Qual é a MELHOR solução?

  • A) Aumentar o tamanho do warehouse para X-Large
  • B) Habilitar multi-cluster warehouse (escalar horizontalmente) ✅
  • C) Habilitar o cache de resultados de queries
  • D) Criar uma materialized view

Q2. Um warehouse está configurado com AUTO_SUSPEND = 300. A última query foi concluída às 10h. O que acontece às 10h05 se nenhuma nova query chegar?

  • A) O warehouse retoma automaticamente
  • B) O warehouse é suspenso automaticamente ✅
  • C) O warehouse gera um alerta
  • D) O warehouse é descartado

Q3. Qual tipo de warehouse fornece 16x mais memória por nó, adequado para treinamento de modelos ML?

  • A) Standard Gen 2
  • B) X-Large Standard
  • C) Snowpark-Optimized ✅
  • D) Multi-cluster Economy

Q4. Qual é o período mínimo de cobrança cada vez que um virtual warehouse é iniciado?

  • A) 30 segundos
  • B) 60 segundos ✅
  • C) 5 minutos
  • D) 1 hora

Q5. A política de escalabilidade ECONOMY para multi-cluster warehouses adiciona um novo cluster quando:

  • A) A primeira query fica em fila
  • B) Mais de 10 queries estão em fila
  • C) O cluster ficaria ocupado por pelo menos 6 minutos ✅
  • D) A utilização de CPU excede 80%

Q6. Um desenvolvedor define AUTO_RESUME = FALSE em um warehouse. O que acontece quando um usuário submete uma query enquanto o warehouse está suspenso?

  • A) O warehouse retoma e executa a query
  • B) A query fica em fila até o warehouse ser retomado manualmente
  • C) A query falha com um erro ✅
  • D) A query é executada na camada Cloud Services

Success

Pontos-Chave para o Dia do Exame:

  1. Duas dimensões de escalabilidade: Aumentar tamanho (queries lentas) vs. Escalar horizontalmente (usuários concorrentes)
  2. Multi-cluster requer edição Enterprise
  3. Cobrança: por segundo, mínimo de 60 segundos por inicialização
  4. Snowpark-Optimized = 16x memória, para ML/ciência de dados
  5. Política STANDARD = adiciona cluster imediatamente | ECONOMY = aguarda carga sustentada
  6. AUTO_RESUME = FALSE + warehouse suspenso = query falha (não fica em fila)
Progresso21%