Como resolver o vazamento de memória¶
Este tópico discute como um proprietário ou administrador de warehouse pode resolver o vazamento de memória a fim de melhorar o desempenho de uma consulta.
O desempenho é reduzido drasticamente quando um warehouse fica sem memória enquanto executa uma consulta, porque os bytes de memória devem “vazar” para o armazenamento local em disco. Se a consulta exigir ainda mais memória, ela vazará para o armazenamento remoto do provedor de nuvem, o que resulta em um desempenho ainda pior.
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 buscar consultas com vazamento para o armazenamento¶
Esta consulta identifica as 10 piores consultas em termos de bytes vazados para o armazenamento local e remoto.
SELECT query_id, SUBSTR(query_text, 1, 50) partial_query_text, user_name, warehouse_name,
bytes_spilled_to_local_storage, bytes_spilled_to_remote_storage
FROM snowflake.account_usage.query_history
WHERE (bytes_spilled_to_local_storage > 0
OR bytes_spilled_to_remote_storage > 0 )
AND start_time::date > dateadd('days', -45, current_date)
ORDER BY bytes_spilled_to_remote_storage, bytes_spilled_to_local_storage DESC
LIMIT 10;
Opções para resolver o vazamento de memória¶
Quando o problema é o vazamento de memória, você pode converter seu warehouse existente em um warehouse otimizado por Snowpark, que fornece 16x mais memória por nó e 10x o cache local em comparação com um warehouse padrão. Embora um warehouse maior também tenha mais memória disponível, uma consulta pode não exigir seus recursos de computação expandidos.
Se você quiser tentar resolver o vazamento de uma consulta sem ajustar o warehouse que a executa, use o Perfil de consulta para identificar quais nós de operação estão causando o vazamento.
Considerações sobre custo¶
Quando uma consulta exigir memória adicional sem computação adicional, é mais econômico mudar para um warehouse otimizado por Snowpark em vez de aumentar o tamanho do warehouse.
O seguinte é uma comparação lado a lado do consumo de crédito para um warehouse padrão e um warehouse otimizado por Snowpark:
Tipo de warehouse virtual |
X-Small |
Small |
Medium |
Large |
X-Large |
2X-Large |
3X-Large |
4X-Large |
5X-Large |
6X-Large |
---|---|---|---|---|---|---|---|---|---|---|
Padrão |
1 |
2 |
4 |
8 |
16 |
32 |
64 |
128 |
256 |
512 |
Otimizado para Snowpark |
n/a |
n/a |
6 |
12 |
24 |
48 |
96 |
192 |
384 |
768 |
Como converter para um warehouse otimizado por Snowpark¶
Note que os warehouse X-Small e Small não podem ser convertidos em um warehouse otimizado por Snowpark, a menos que você aumente o tamanho primeiro.
Converter um warehouse padrão existente em um warehouse otimizado por Snowpark:
- Snowsight:
Entre em Snowsight.
Navegue até Admin » Warehouses.
Encontre o warehouse e selecione … » Suspend. Um warehouse deve ser suspenso antes de mudar seu tipo.
Selecione … » Edit.
No menu suspenso Warehouse Type, selecione Snowpark-optimized.
Selecione Save Warehouse.
- SQL:
Use o comando ALTER WAREHOUSE para mudar o tipo de warehouse. O warehouse deve ser suspenso antes de mudar seu tipo. Por exemplo:
ALTER WAREHOUSE SUSPEND; ALTER WAREHOUSE my_analytics_wh SET WAREHOUSE_TYPE='snowpark-optimized';