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:

  1. 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.

  2. 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 que 1. 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.