너무 커서 메모리에 적합하지 않은 쿼리

이 항목에서는 웨어하우스 소유자 또는 관리자가 쿼리 성능 향상을 위해 메모리 유출 문제를 해결하는 방법에 대해 설명합니다.

메모리 바이트는 로컬 디스크 저장소로 “넘쳐야” 하므로 쿼리를 실행하는 동안 웨어하우스의 메모리가 부족해지면 성능이 크게 저하됩니다. 쿼리에 훨씬 더 많은 메모리가 필요한 경우 원격 클라우드 공급자 저장소로 유출되어 성능이 훨씬 더 악화합니다.

참고

이 항목에서 제공되는 진단 쿼리를 실행하려면 공유 SNOWFLAKE 데이터베이스에 대한 액세스 권한 이 있어야 합니다. 기본적으로 ACCOUNTADMIN 역할만 쿼리 실행에 필요한 권한을 갖습니다.

저장소로 유출되는 쿼리 찾기

이 쿼리는 로컬 및 원격 저장소로 유출된 바이트라는 측면에서 최악의 영향을 미치는 쿼리 10개를 식별합니다.

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

권장 사항

저장소로 데이터가 유출되면 쿼리 성능에 부정적인 영향을 미칠 수 있습니다(특히 쿼리가 원격 저장소로 유출되어야 하는 경우). 이를 완화하기 위해 Snowflake에서는 다음을 권장합니다.

  • 더 큰 웨어하우스 사용(작업에 사용 가능한 메모리/로컬 저장소 공간을 효과적으로 늘림)

  • 크기가 더 작은 일괄 처리로 데이터 처리.

Query Profile 을 사용하여 어떤 작업 노드가 데이터를 저장소로 유출시키는지 식별할 수 있습니다. 적절한 웨어하우스 크기를 선택하기 위한 고려 사항은 웨어하우스 고려 사항 섹션을 참조하십시오.