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;
Copy

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.

Para obter mais informações sobre as implicações de desempenho do despejo, consulte o artigo da comunidade Impacto no desempenho do despejo de disco local e remoto.

Dica

Quando o serviço de aceleração de consulta (QAS) está ativado, o Snowflake grava uma pequena quantidade de dados no armazenamento remoto para cada consulta elegível, mesmo que o QAS não seja usado para essa consulta. Portanto, não se preocupe com um valor diferente de zero para bytes_spilled_to_remote_storage na exibição QUERY_HISTORY quando o QAS estiver ativado.