Como trabalhar com warehouses

Todas as tarefas de warehouses podem ser executadas a partir da interface da web do Snowflake ou usando os comandos DDL para warehouses.

Neste tópico:

Como criar um warehouse

Um warehouse pode ser criado através da interface da web ou usando SQL:

Snowsight:

Selecione Admin » Warehouses » Warehouse

Classic Console:

Selecione Warehouses Guia Warehouses » Create

SQL:

Execute um comando CREATE WAREHOUSE.

Ao criar um warehouse, você pode especificar se o warehouse é criado inicialmente no estado “Iniciado” (ou seja, em funcionamento) ou “Suspenso”. Se você escolher “Iniciado”, o warehouse começa a consumir créditos quando todos os recursos computados são provisionados para o warehouse.

Nota

Se você optar por criar um warehouse no estado “Iniciado”, o warehouse pode levar algum tempo para ficar totalmente disponível, pois o Snowflake fornecerá todos os recursos computacionais para o warehouse.

Início ou retomada de um warehouse

Um warehouse pode ser iniciado a qualquer momento, inclusive na criação inicial. Quando um warehouse é criado, retomar seu funcionamento é o mesmo que iniciá-lo.

Um warehouse suspenso (ou seja, inativo) pode ser retomado através da interface da web ou usando SQL:

Snowsight:

Selecione Admin » Warehouses » <nome_do_warehouse_suspenso> » Mais opções » Resume

Classic Console:

Selecione Warehouses Guia Warehouses » <nome_do_warehouse_suspenso> » Resume

SQL:

Execute um comando ALTER WAREHOUSE com a palavra-chave RESUME.

Iniciar um warehouse normalmente leva apenas alguns segundos; contudo, em alguns raros casos, pode levar mais tempo à medida que o Snowflake fornece os recursos computacionais para o warehouse.

Warehouses consomem créditos enquanto funcionam:

  • Um warehouse começa a consumir créditos quando todos os recursos computacionais são provisionados para o warehouse.

    • Em um raro caso, quando alguns dos recursos computados não conseguem provisionar, o warehouse só consome créditos para os recursos computados provisionados.

    • Quando os recursos computacionais restantes são provisionados com sucesso, o warehouse começa a consumir créditos para todos os recursos computacionais solicitados.

  • Enquanto o início ou a retomada de um warehouse muitas vezes leva apenas alguns segundos, em alguns casos, pode levar mais tempo porque o Snowflake fornece os recursos computacionais para o warehouse.

  • O Snowflake não começa a executar instruções SQL enviadas a um warehouse até que todos os recursos computados para o warehouse sejam provisionados com sucesso, a menos que qualquer um dos recursos deixe de provisionar:

    • Se qualquer um dos recursos computados para o warehouse deixar de provisionar durante a inicialização, o Snowflake tentará reparar os recursos falhados.

    • Durante o processo de reparo, o warehouse começa a processar instruções SQL quando 50% ou mais dos recursos computacionais solicitados forem provisionados com sucesso.

Os créditos são faturados por segundo enquanto o warehouse está funcionando, com um mínimo de 1 minuto a cada vez que o warehouse é retomado; entretanto, o consumo de crédito é relatado em incrementos de 60 minutos (ou seja, de hora em hora).

Nota

Um warehouse deve estar em execução e ser o warehouse atual para a sessão (ou seja, em uso) para processar as instruções SQL apresentadas na sessão. Para obter mais informações, consulte Como usar um warehouse neste tópico.

Como suspender um warehouse

Um warehouse em execução pode ser suspenso a qualquer momento, mesmo durante a execução de instruções SQL. A suspensão de um warehouse impede que ele consuma créditos quando todos os recursos computacionais tiverem sido encerrados.

Um warehouse pode ser suspenso através da interface da web ou usando SQL:

Snowsight:

Selecione Admin » Warehouses » <nome_do_warehouse_iniciado> » Mais opções » Suspend

Classic Console:

Selecione Warehouses Guia Warehouses » <nome_do_warehouse_iniciado> » Suspend

SQL:

Execute um comando ALTER WAREHOUSE com a palavra-chave SUSPEND.

Ao suspender um warehouse, o Snowflake desliga imediatamente todos os recursos de computação ociosos do warehouse, mas permite que quaisquer recursos de computação que estejam executando instruções continuem até que as instruções sejam concluídas, momento em que os recursos são desligados e o status do warehouse muda para “Suspenso”. Os recursos computacionais à espera de serem desligados são considerados estar em modo “quiesce” (fechado para novas sessões).

Redimensionamento de um warehouse

Um warehouse pode ser redimensionado para cima ou para baixo a qualquer momento, inclusive enquanto estiver em funcionamento e processando instruções.

Um warehouse pode ser redimensionado através da interface da web ou usando SQL:

Snowsight:

Selecione Admin » Warehouses » <nome_do_warehouse> » Mais opções » Edit

Classic Console:

Selecione Warehouses Guia Warehouses » <nome_do_warehouse> » Configure

SQL:

Execute um comando ALTER WAREHOUSE com SET WAREHOUSE_SIZE = ....

Redimensionar um warehouse para um tamanho maior é útil quando as operações que estão sendo realizadas pelo warehouse se beneficiarão de mais recursos computacionais, inclusive:

  • Melhorar o desempenho de consultas grandes e complexas em relação a grandes conjuntos de dados.

  • Melhorar o desempenho durante o carregamento e descarregamento de quantidades significativas de dados.

Efeitos do redimensionamento de um warehouse em funcionamento

O redimensionamento de um warehouse em funcionamento adiciona ou remove recursos de computação em cada cluster no warehouse. Todas as regras de uso e crédito associadas ao início ou suspensão de um warehouse se aplicam ao redimensionamento de um warehouse iniciado, como por exemplo:

  • Os recursos de computação adicionados a um warehouse começam a usar créditos quando são provisionados; no entanto, os recursos de computação adicionais não começam a executar instruções até que todos eles sejam provisionados, a menos que alguns dos recursos deixem de provisionar.

  • Recursos computacionais somente são removidos de um warehouse quando eles não estiverem mais sendo utilizados para executar quaisquer instruções atuais.

O redimensionamento de um warehouse não tem nenhum impacto sobre as instruções que estão sendo executadas atualmente pelo warehouse. Ao redimensionar para um tamanho maior, os novos recursos computacionais, uma vez totalmente provisionados, são utilizados apenas para executar instruções que já estão na fila do warehouse, bem como todas as instruções futuras enviadas ao warehouse.

Dica

Para verificar se os recursos de computação adicionais para seu warehouse foram totalmente provisionados, adicione o parâmetro WAIT_FOR_COMPLETION ao comando ALTER WAREHOUSE. Você também pode usar SHOW WAREHOUSES para verificar seu state.

Efeitos do redimensionamento de um warehouse suspenso

O redimensionamento de um warehouse suspenso não fornece nenhum novo recurso de computação para o warehouse. Ele simplesmente instrui o Snowflake a fornecer os recursos adicionais de computação quando o warehouse for retomado novamente, momento em que se aplicam todas as regras de uso e crédito associadas ao início de um warehouse.

Como usar um warehouse

Para executar uma consulta ou instrução DML no Snowflake, um warehouse deve estar em funcionamento e deve ser especificado como o warehouse atual para a sessão em que a consulta/instrução é enviada.

Uma sessão do Snowflake só pode ter um warehouse atual de cada vez. O warehouse atual para a sessão pode ser especificado ou alterado a qualquer momento através do comando USE WAREHOUSE.

Quando um warehouse em funcionamento tiver sido definido como o warehouse atual para a sessão, as consultas e instruções DML enviadas dentro da sessão serão processadas pelo warehouse. Nas páginas History Guia Histórico e Worksheets Guia Planilha no Classic Console, você pode visualizar o warehouse usado para processar cada consulta/instrução.

Como delegar o gerenciamento do warehouse

Por padrão, a função ACCOUNTADMIN recebe a capacidade de alterar, suspender, descrever e executar outras operações em todos os warehouses da conta.

Se precisar delegar essas capacidades a uma função personalizada em sua conta, você pode usar o comando GRANT <privilégios> para conceder o privilégio MANAGE WAREHOUSES para essa função. A concessão do privilégio MANAGE WAREHOUSES é equivalente a conceder os privilégios MODIFY, MONITOR e OPERATE em todos os warehouses da conta.

Os exemplos a seguir demonstram como você pode delegar a capacidade de gerenciar warehouses a uma função personalizada chamada manage_wh_role. O exemplo usa o manage_wh_role para fazer alterações no warehouse test_wh, que pertence a uma função diferente (create_wh_role).

Crie uma nova função que criará e será proprietária de um novo warehouse e concederá o privilégio CREATE WAREHOUSE para essa função:

CREATE ROLE create_wh_role;
GRANT CREATE WAREHOUSE ON ACCOUNT TO ROLE create_wh_role;
GRANT ROLE create_wh_role TO ROLE SYSADMIN;
Copy

Crie uma segunda função que gerencie todos os warehouses da conta e conceda o privilégio MANAGE WAREHOUSES a essa função:

CREATE ROLE manage_wh_role;
GRANT MANAGE WAREHOUSES ON ACCOUNT TO ROLE manage_whs_role;
GRANT ROLE manage_whs_role TO ROLE SYSADMIN;
Copy

Usando a função create_wh_role, crie um novo warehouse:

USE ROLE create_wh_role;
CREATE OR REPLACE WAREHOUSE test_wh
    WITH WAREHOUSE_SIZE= XSMALL;
Copy

Altere a função atual para manage_wh_role:

USE ROLE manage_whs_role;
Copy

Apesar de manage_wh_role não possuir o test_wh, essa função tem o privilégio MANAGE WAREHOUSES, o que significa que você pode:

  • Suspender e retomar o warehouse:

    ALTER WAREHOUSE test_wh SUSPEND;
    ALTER WAREHOUSE test_wh RESUME;
    
    Copy
  • Alterar o tamanho do warehouse:

    ALTER WAREHOUSE test_wh SET WAREHOUSE_SIZE = SMALL;
    
    Copy
  • Descrever o warehouse:

    DESC WAREHOUSE test_wh;
    
    Copy