Consultas grandes demais para caber na 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;
Recomendações¶
O vazamento de dados para o armazenamento pode ter um impacto negativo no desempenho da consulta (especialmente se a consulta tiver que vazar para um armazenamento remoto). Para aliviar isso, a Snowflake recomenda:
Usar um warehouse maior (aumentando efetivamente a memória disponível/espaço em armazenamento local para a operação)
Processar dados em lotes menores.
Você pode usar o Perfil de consulta para identificar quais nós de operação estão causando vazamento de dados no armazenamento. Para considerações sobre a seleção do dimensionamento apropriado do warehouse, consulte Considerações sobre warehouses.