Como otimizar o cache do warehouse¶
Este tópico discute como um proprietário ou administrador de warehouse pode otimizar o cache de um warehouse a fim de melhorar o desempenho das consultas executadas no warehouse.
Um warehouse em execução mantém um cache de dados de tabela que pode ser acessado por consultas executadas no mesmo warehouse. Isto pode melhorar o desempenho das consultas subsequentes se elas forem capazes de ler a partir do cache em vez de a partir de tabelas.
Consulte também Uso de resultados de consultas persistentes, que explica como os resultados de consultas específicas podem ser armazenados em cache e reutilizados.
Nota
Você deve ter acesso ao banco de dados SNOWFLAKE compartilhado para executar as consultas de diagnóstico fornecidas neste tópico. Por padrão, somente a função ACCOUNTADMIN tem os privilégios necessários para executar as consultas.
Como encontrar dados digitalizados a partir do cache¶
A consulta a seguir fornece a porcentagem de dados digitalizados a partir do cache, agregados em todas as consultas e separados por warehouse.
Se você tiver consultas que podem se beneficiar dos dados escaneados do cache (por exemplo, consultas frequentes e similares) e a porcentagem de dados digitalizados a partir do cache for baixa, você poderá ver um aumento de desempenho ao otimizar o cache.
SELECT warehouse_name
,COUNT(*) AS query_count
,SUM(bytes_scanned) AS bytes_scanned
,SUM(bytes_scanned*percentage_scanned_from_cache) AS bytes_scanned_from_cache
,SUM(bytes_scanned*percentage_scanned_from_cache) / SUM(bytes_scanned) AS percent_scanned_from_cache
FROM snowflake.account_usage.query_history
WHERE start_time >= dateadd(month,-1,current_timestamp())
AND bytes_scanned > 0
GROUP BY 1
ORDER BY 5;
Sobre o cache e a suspensão automática¶
A configuração de suspensão automática do warehouse pode ter um impacto direto no desempenho da consulta, uma vez que o cache é descartado quando o warehouse é suspenso. Se um warehouse estiver executando consultas frequentes e semelhantes, pode não fazer sentido suspender o warehouse entre consultas porque o cache pode ser descartado antes que a próxima consulta seja executada.
Você pode usar as seguintes diretrizes gerais ao definir esse limite de tempo de suspensão automática:
Para tarefas, Snowflake recomenda a suspensão imediata.
Para casos de uso de DevOps, DataOps e Data Science, Snowflake recomenda configurar a suspensão automática para aproximadamente 5 minutos, já que o cache não é tão importante para consultas ad-hoc e exclusivas.
Para os warehouses de consulta, por exemplo os casos de uso de BI e SELECT, Snowflake recomenda ajustar a suspensão automática para pelo menos 10 minutos para manter o cache para os usuários.
Considerações sobre custo¶
Tenha em mente que um warehouse em funcionamento consome créditos, mesmo que não esteja processando consultas. Certifique-se de que sua configuração de suspensão automática esteja de acordo com sua carga de trabalho. Por exemplo, se um warehouse executar uma consulta a cada 30 minutos, não faz sentido definir a configuração de suspensão automática para 10 minutos. O warehouse consumirá créditos enquanto estiver ocioso sem obter os benefícios de um cache, pois ele será descartado antes da próxima consulta ser executada.
Como configurar a suspensão automática¶
Para mudar quanto tempo deve passar antes que um warehouse seja suspenso e seu cache seja descartado:
- Snowsight:
Entre em Snowsight.
Navegue até Admin » Warehouses.
Encontre o warehouse e selecione … » Edit.
Certifique-se de que Auto Suspend esteja ativado.
No campo Suspend After (min), digite o número de minutos que devem transcorrer antes que o warehouse seja suspenso.
Selecione Save Warehouse.
- SQL:
Use o comando ALTER WAREHOUSE para alterar o limite de tempo de suspensão automática, que é especificado em segundos, não em minutos. Por exemplo:
ALTER WAREHOUSE my_wh SET AUTO_SUSPEND = 600;