메모리 유출 해결하기

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

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

참고

이 항목에서 제공되는 진단 쿼리를 실행하려면 공유 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

메모리 유출 문제 해결을 위한 옵션

메모리 유출이 문제일 때는 기존 웨어하우스를 Snowpark에 최적화된 웨어하우스로 전환할 수 있는데, 이 웨어하우스는 표준 웨어하우스에 비해 노드당 16배 더 많은 메모리와 10배 더 많은 로컬 캐시를 제공합니다. 웨어하우스가 클수록 사용 가능한 메모리도 더 많지만, 쿼리에 웨어하우스의 확장된 컴퓨팅 리소스가 필요하지 않을 수도 있습니다.

쿼리를 실행하는 웨어하우스를 조정하지 않고 쿼리 유출을 해결하려면 Query Profile 을 사용하여 어떤 작업 노드가 유출을 일으키는지 파악하십시오.

비용 고려 사항

쿼리에 추가 컴퓨팅 없이 추가 메모리가 필요한 경우 웨어하우스 크기를 늘리기보다는 Snowpark에 최적화된 웨어하우스로 전환하는 것이 더 비용 효율적입니다.

아래에서 표준 웨어하우스와 Snowpark에 최적화된 웨어하우스의 크레딧 사용량을 비교한 결과를 나란히 보여줍니다.

가상 웨어하우스의 유형

X-Small

Small

Medium

Large

X-Large

2X-Large

3X-Large

4X-Large

5X-Large

6X-Large

Standard

1

2

4

8

16

32

64

128

256

512

Snowpark에 최적화됨

해당 없음

해당 없음

6

12

24

48

96

192

384

768

Snowpark에 최적화된 웨어하우스로 전환하는 방법

X-Small 및 Small 웨어하우스는 크기를 먼저 늘리지 않는 한 Snowpark에 최적화된 웨어하우스로 전환할 수 없습니다.

기존 표준 웨어하우스를 Snowpark에 최적화된 웨어하우스로 전환하는 방법:

Snowsight:
  1. Snowsight 에 로그인합니다.

  2. Admin » Warehouses 으로 이동합니다.

  3. 웨어하우스를 찾아 » Suspend 를 선택합니다. 웨어하우스의 유형을 변경하기 전에 웨어하우스를 일시 중단해야 합니다.

  4. » Edit 를 선택합니다.

  5. Warehouse Type 드롭다운에서 Snowpark-optimized 를 선택합니다.

  6. Save Warehouse 를 선택합니다.

SQL:

웨어하우스 유형을 변경하려면 ALTER WAREHOUSE 명령을 사용하십시오. 웨어하우스의 유형을 변경하기 전에 웨어하우스를 일시 중단해야 합니다. 예:

ALTER WAREHOUSE SUSPEND;
ALTER WAREHOUSE my_analytics_wh SET WAREHOUSE_TYPE='snowpark-optimized';
Copy