Considerações sobre warehouses¶
Este tópico fornece diretrizes gerais e práticas recomendadas para o uso de warehouses virtuais no Snowflake para processar consultas. Ele não fornece números, valores ou recomendações específicas ou absolutas porque cada cenário de consulta é diferente e é afetado por inúmeros fatores, incluindo número de usuários/consultas simultâneas, número de tabelas sendo consultadas e tamanho e composição dos dados, bem como seus requisitos específicos de disponibilidade, latência e custo do warehouse.
Ele também não cobre considerações do warehouse para carregamento de dados, que são cobertas em outro tópico (veja a barra lateral).
As chaves para usar warehouses de forma eficaz e eficiente são:
Testar diferentes tipos de consultas e diferentes tamanhos de warehouse para determinar as combinações que melhor atendem às suas necessidades específicas de consulta e carga de trabalho.
Não se concentrar no tamanho do warehouse. O Snowflake usa uma cobrança por segundo, para que você possa operar warehouses grandes (Large, X-Large, 2X-Large, etc.) e simplesmente suspendê-los quando não estiverem em uso.
Nota
Estas diretrizes e práticas recomendadas se aplicam tanto aos warehouses de um único cliente, que são padrão para todas as contas, quanto a warehouses multicluster, que estão disponíveis na Snowflake Enterprise Edition (e superior).
Neste tópico:
Como são cobrados os créditos para os warehouses?¶
As cobranças de crédito são calculadas com base:
No tamanho do warehouse.
No número de clusters (ao usar warehouses multicluster).
O tempo de duração da execução dos recursos computacionais em cada cluster.
Por exemplo:
- X-Small:
Fatura 1 crédito por hora completa e contínua que cada cluster executa; cada tamanho sucessivo geralmente dobra o número de recursos computacionais por warehouse.
- 4X-Large:
Fatura 128 créditos por hora completa e contínua que cada cluster executa.
Observe o seguinte:
Quando recursos computacionais são provisionados para um warehouse:
A carga mínima de cobrança para o provisionamento dos recursos computacionais é de 1 minuto (ou seja, 60 segundos).
Não há nenhum benefício em parar um warehouse antes que o primeiro período de 60 segundos tenha terminado, porque os créditos já terão sido faturados para esse período.
Após os primeiros 60 segundos, toda a cobrança posterior de um warehouse em funcionamento é calculada por segundo (até que todos os seus recursos computacionais sejam encerrados). Três exemplos são fornecidos abaixo:
Se um warehouse funciona por de 30 a 60 segundos, ele é faturado por 60 segundos.
Se um warehouse funciona por 61 segundos, ele é faturado por apenas 61 segundos.
Se um warehouse funciona por 61 segundos, desliga e depois reinicia e funciona por menos de 60 segundos, ele é faturado por 121 segundos (60 + 1 + 60).
O redimensionamento de um warehouse provisiona recursos computacionais adicionais para cada cluster no warehouse:
Isso resulta em um aumento correspondente no número de créditos faturados pelo warehouse (enquanto os recursos computacionais adicionais estão em execução).
Os recursos computacionais adicionais são cobrados quando eles são provisionados (ou seja, os créditos para os recursos adicionais são faturados em relação ao tempo em que o warehouse foi redimensionado).
O redimensionamento entre um warehouse 5XL ou 6XL para um warehouse 4XL ou menor resulta em um breve período durante o qual o cliente é cobrado tanto pelo novo warehouse quanto pelo antigo, enquanto o warehouse antigo é fechado.
O uso de crédito é exibido em incrementos de horas. Com o faturamento por segundo, você verá valores fracionários para uso/cobrança de crédito.
Como a composição da consulta impacta o processamento do warehouse?¶
Os recursos computacionais necessários para processar uma consulta dependem do tamanho e da complexidade da consulta. Na maioria das vezes, as consultas são escalonadas linearmente em relação ao tamanho do warehouse, particularmente para consultas grandes e complexas. Ao considerar os fatores que impactam o processamento da consulta, leve em conta o seguinte:
O tamanho geral das tabelas consultadas tem mais impacto do que o número de linhas.
A filtragem de consultas utilizando previsões tem um impacto no processamento, assim como o número de junções/tabelas na consulta.
Dica
Para obter os melhores resultados, tente executar consultas relativamente homogêneas (tamanho, complexidade, conjuntos de dados, etc.) no mesmo warehouse; executar consultas de tamanho e/ou complexidade amplamente variáveis no mesmo warehouse torna mais difícil analisar a carga do warehouse, o que pode tornar mais difícil selecionar o tamanho mais adequado ao tamanho, composição e número de consultas em sua carga de trabalho.
Como o cache do warehouse afeta as consultas?¶
Cada warehouse, quando em funcionamento, mantém um cache de dados de tabela acessados à medida que as consultas são processadas pelo warehouse. Isso permite um melhor desempenho para consultas posteriores se elas puderem ler do cache em vez de ler da(s) tabela(s) na consulta. O tamanho do cache é determinado pelos recursos computacionais do warehouse (ou seja, quanto maior o warehouse e, portanto, mais recursos computacionais ele tiver, maior o cache).
Esse cache é removido quando o warehouse é suspenso, o que pode resultar em um desempenho inicial mais lento para algumas consultas depois que o warehouse for retomado. Quando o warehouse volta a funcionar e processa mais consultas, o cache é reconstruído, e as consultas que podem tirar proveito do cache têm um melhor desempenho.
Tenha isso em mente ao decidir se você quer suspender um warehouse ou deixá-lo em funcionamento. Em outras palavras, pese as vantagens e desvantagens entre economizar créditos suspendendo um warehouse e manter o cache de dados de consultas anteriores para ajudar no desempenho.
Como criar um warehouse¶
Ao criar um warehouse, os dois fatores mais críticos a considerar, do ponto de vista de custo e desempenho, são:
Tamanho do warehouse (ou seja, recursos computacionais disponíveis)
Gestão manual versus gestão automatizada (para iniciar/retomar e suspender warehouses).
O número de clusters em um warehouse também é importante se você estiver usando a Snowflake Enterprise Edition (ou superior) e warehouses multicluster. Para obter mais detalhes, consulte Escalonamento vertical versus externo (neste tópico).
Como escolher um tamanho inicial de warehouse¶
O tamanho inicial que você seleciona para um warehouse depende da tarefa que o warehouse está realizando e da carga de trabalho que ele processa. Por exemplo:
Para o carregamento de dados, o tamanho do warehouse deve corresponder ao número de arquivos sendo carregados e à quantidade de dados em cada arquivo. Para obter mais detalhes, consulte Planejamento de um carregamento de dados.
Para consultas em ambientes de testes em pequena escala, warehouses relativamente pequenos (X-Small, Small, Medium) podem ser suficientes.
Para consultas em ambientes de produção em grande escala, pode ser mais econômico usar warehouses grandes (Large, X-Large, 2X-Large, etc.).
Entretanto, observe que a cobrança de crédito por segundo e a autossuspensão lhe dão a flexibilidade de começar com tamanhos grandes e depois ajustar o tamanho para corresponder às suas cargas de trabalho. Você sempre pode diminuir o tamanho de um warehouse a qualquer momento.
Além disso, maior não é necessariamente mais rápido para consultas pqeuenas e básicas. Consultas pequenas/simples normalmente não precisam de um warehouse X-Large (ou maior) porque elas não necessariamente se beneficiam dos recursos adicionais, independentemente do número de consultas sendo processadas ao mesmo tempo. Em geral, você deve tentar adequar o tamanho do warehouse ao tamanho e complexidade esperados das consultas a serem processadas pelo warehouse.
Dica
Faça testes executando as mesmas consultas em warehouses de vários tamanhos (por exemplo, X-Large, Large, Medium). As consultas que você testar devem ter de um tamanho e complexidade de forma que você saiba que elas normalmente serão concluídas dentro de 5 a 10 minutos (ou menos).
Como automatizar a suspensão do warehouse¶
Warehouses podem ser configurados para se suspender automaticamente quando não há atividade após um período de tempo especificado. A autossuspensão é habilitada especificando o período (minutos, horas, etc.) de inatividade para o warehouse.
Recomendamos que você configure a autossuspensão de acordo com sua carga de trabalho e suas exigências de disponibilidade de warehouse:
Se você habilitar a autossuspenção, recomendamos defini-la para um valor baixo (por exemplo, 5 ou 10 minutos ou menos), porque o Snowflake usa uma cobrança por segundo. Isso ajudará a evitar que seus warehouses funcionem (e consumam créditos) quando não estiverem em uso.
Entretanto, o valor que você definir deve corresponder às lacunas, se houver, na carga de trabalho de sua consulta. Por exemplo, se você tiver intervalos regulares de 2 ou 3 minutos entre as consultas recebidas, não faz sentido definir o uso de 1 ou 2 minutos porque seu warehouse estará em um estado contínuo de suspensão e retomada (se a retomada automática também estiver habilitada) e cada vez que ele for retomado, você será cobrado pelo uso de crédito mínimo (ou seja, 60 segundos).
Você pode querer considerar a possibilidade de desativar a autossuspensão para um warehouse se:
Você tem uma carga de trabalho pesada e constante para o warehouse.
Você precisa que o warehouse fique disponível sem atrasos ou retardo. O abastecimento do warehouse geralmente é muito rápido (por exemplo, 1 ou 2 segundos); entretanto, dependendo do tamanho do warehouse e da disponibilidade de recursos computacionais para provisionar, pode levar mais tempo.
Importante
Se você optar por desativar a autossuspensão, considere cuidadosamente os custos associados ao funcionamento contínuo de um warehouse, mesmo quando o warehouse não estiver processando consultas. Os custos podem ser significativos, especialmente para warehouses grandes (X-Large, 2X-Large, etc.).
Para desativar a autossuspensão, você deve selecionar explicitamente Never na interface da web, ou especificar 0
ou NULL
no SQL.
Automatização da retomada do warehouse¶
Warehouses podem ser configurados para ser retomados automaticamente quando novas consultas forem enviadas.
Recomendamos habilitar/desabilitar a retomada automática dependendo de quanto controle você deseja exercer sobre o uso de um determinado warehouse:
Se o custo e o acesso não forem um problema, habilite a retomada automática para garantir que o warehouse comece sempre que necessário. Tenha em mente que pode haver um pequeno atraso na retomada do warehouse devido ao provisionamento.
Se você deseja controlar os custos e/ou o acesso do usuário, deixe a retomada automática desativada e, em vez disso, retome manualmente o warehouse somente quando necessário.
Escalonamento vertical versus externo¶
O Snowflake oferece suporte para duas formas de escalonar os warehouses:
Escalonamento vertical através do redimensionamento de um warehouse.
Escalonamento externo adicionando clusters a um warehouse multicluster (requer Snowflake Enterprise Edition ou superior).
O redimensionamento do warehouse melhora o desempenho¶
O redimensionamento de um warehouse geralmente melhora o desempenho das consultas, particularmente para consultas grandes e complexas. Ele também pode ajudar a reduzir a fila de espera que ocorre se um warehouse não tiver recursos computacionais suficientes para processar todas as consultas que são enviadas ao mesmo tempo. Observe que o redimensionamento de warehouse não se destina a lidar com questões de simultaneidade; em vez disso, use warehouses adicionais para lidar com a carga de trabalho ou use um warehouse multicluster (se esse recurso estiver disponível para sua conta).
O Snowflake oferece suporte para o redimensionamento de um warehouse a qualquer momento, mesmo enquanto em funcionamento. Se uma consulta estiver funcionamento lentamente e você tiver consultas adicionais de tamanho e complexidade semelhantes que você queira executar no mesmo warehouse, você pode escolher redimensionar o warehouse enquanto ele estiver funcionando. No entanto, observe o seguinte:
Como dito anteriormente sobre o tamanho do warehouse, maior não é necessariamente mais rápido; para consultas pequenas e básicas que já estão sendo executadas rapidamente, você pode não ver nenhuma melhoria significativa após o redimensionamento.
O redimensionamento de um warehouse em funcionamento não afeta as consultas que já estão sendo processadas pelo warehouse; os recursos computacionais adicionais, uma vez totalmente provisionados, são utilizados apenas para filas de espera e novas consultas.
O redimensionamento entre um warehouse 5XL ou 6XL para um warehouse 4XL ou menor resulta em um breve período durante o qual o cliente é cobrado tanto pelo novo warehouse quanto pelo antigo, enquanto o warehouse antigo é fechado.
Dica
Diminuir o tamanho de um warehouse em funcionamento remove recursos computacionais do warehouse. Quando os recursos do computador são removidos, o cache associado a esses recursos é abandonado, o que pode impactar o desempenho da mesma forma que suspender o warehouse pode impactar o desempenho depois que ele for retomado.
Tenha isso em mente ao escolher se deseja diminuir o tamanho de um warehouse em funcionamento ou mantê-lo com o tamanho atual. Em outras palavras, deve-se pesar as vantagens e desvantagens entre a economia de créditos e a manutenção do cache.
Warehouses multicluster melhoram a simultaneidade¶
Warehouses multicluster são projetados especificamente para lidar com questões de fila e desempenho relacionadas a um grande número de usuários e/ou consultas simultâneas. Além disso, warehouses multicluster podem ajudar a automatizar esse processo se seu número de usuários/consultas tende a flutuar.
Ao decidir se você quer usar warehouses multicluster e o número de clusters a serem usados por warehouse multicluster, considere o seguinte:
Se você estiver usando o Snowflake Enterprise Edition (ou uma edição superior), todos os seus warehouses devem ser configurados como warehouses multicluster.
A menos que você tenha um requisito específico de rodar no modo Maximizado, warehouses multicluster devem ser configurados para rodar no modo de dimensionamento automático, o que permite que o Snowflake inicie e pare clusters automaticamente conforme necessário.
Ao escolher o número mínimo e máximo de clusters para um warehouse multicluster:
- Mínimo:
Mantenha o valor padrão de
1
; isso garante que os clusters adicionais só serão iniciados quando necessário. Entretanto, se a alta disponibilidade do warehouse for uma preocupação, defina um valor mais alto que1
. Isso ajuda a garantir a disponibilidade e continuidade do warehouse multicluster no improvável caso de falha de um cluster.- Máximo:
Defina este valor como o maior possível, tendo em mente o tamanho do warehouse e os custos de crédito correspondentes. Por exemplo, um warehouse multicluster X-Large com número máximo de clusters =
10
consumirá 160 créditos em uma hora se todos os 10 clusters funcionarem continuamente durante a hora.