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

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
  1. Entre em Snowsight.

  2. Navegue até Admin » Warehouses.

  3. Encontre o warehouse e selecione » Suspend. Um warehouse deve ser suspenso antes de mudar seu tipo.

  4. Selecione » Edit.

  5. No menu suspenso Warehouse Type, selecione Snowpark-optimized.

  6. 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';
Copy