웨어하우스 캐시 최적화하기

이 항목에서는 웨어하우스 소유자 또는 관리자가 웨어하우스에서 실행 중인 쿼리의 성능을 개선하기 위해 웨어하우스의 캐시를 최적화하는 방법을 설명합니다.

실행 중인 웨어하우스는 동일한 웨어하우스에서 실행 중인 쿼리에서 액세스할 수 있는 테이블 데이터의 캐시를 유지 관리합니다. 이를 통해 테이블이 아니라 캐시에서 후속 쿼리를 읽을 수 있는 경우 후속 쿼리의 성능을 향상할 수 있습니다.

참고

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

캐시에서 스캔한 데이터 찾기

다음 쿼리는 캐시에서 스캔하여 모든 쿼리에서 집계하고 웨어하우스별로 분석한 데이터의 비율을 제공합니다.

캐시에서 데이터를 스캔하는 것이 유리할 수 있는 쿼리(예: 빈번하고 유사한 쿼리)가 있고 캐시에서 스캔한 데이터의 비율이 낮은 경우 캐시를 최적화하여 성능 향상을 이룰 수도 있습니다.

SELECT warehouse_name
  ,COUNT(*) AS query_count
  ,SUM(bytes_scanned) AS bytes_scanned
  ,SUM(bytes_scanned*percentage_scanned_from_cache) AS bytes_scanned_from_cache
  ,SUM(bytes_scanned*percentage_scanned_from_cache) / SUM(bytes_scanned) AS percent_scanned_from_cache
FROM snowflake.account_usage.query_history
WHERE start_time >= dateadd(month,-1,current_timestamp())
  AND bytes_scanned > 0
GROUP BY 1
ORDER BY 5;
Copy

캐시 및 자동 일시 중단 정보

웨어하우스의 자동 일시 중단 설정은 웨어하우스가 일시 중단될 때 캐시가 삭제되므로 쿼리 성능에 직접적인 영향을 미칠 수 있습니다. 웨어하우스가 빈번하고 유사한 쿼리를 실행하는 경우 다음 쿼리가 실행되기 전에 캐시가 삭제될 수 있으므로 어떤 쿼리와 다음 쿼리 사이에 웨어하우스를 일시 중단하는 것은 타당하지 않을 수 있습니다.

자동 일시 중단 시간 제한을 설정할 때 다음의 일반 지침을 사용할 수 있습니다.

  • 작업 의 경우 즉시 일시 중단하는 것이 좋습니다.

  • DevOps, DataOps 및 데이터 과학 사용 사례의 경우 임시 쿼리와 고유 쿼리에 캐시가 중요하지 않으므로 자동 일시 중단을 약 5분으로 설정하는 것이 좋습니다.

  • 쿼리 웨어하우스의 경우(예: BI 및 SELECT 사용 사례) 자동 일시 중단을 최소 10분 이상으로 설정하여 사용자를 위해 캐시를 유지하는 것이 좋습니다.

비용 고려 사항

실행 중인 웨어하우스는 쿼리를 처리하지 않는 경우에도 크레딧을 사용한다는 점에 유의하십시오. 자동 일시 중단 설정이 워크로드와 일치하는지 확인하십시오. 예를 들어 웨어하우스가 30분마다 쿼리를 실행하는 경우 자동 일시 중단 설정을 10분으로 설정하는 것은 타당성이 없습니다. 다음 쿼리가 실행되기 전에 캐시가 삭제되므로 웨어하우스가 캐시의 이점을 활용하지 못하고서 유휴 상태로 머무는 동안 크레딧을 사용하게 됩니다.

자동 일시 중단 구성 방법

웨어하우스가 일시 중단되고 해당 캐시가 삭제되기 전에 경과해야 하는 시간을 변경하는 방법은 다음과 같습니다.

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

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

  3. 웨어하우스를 찾아 » Edit 를 선택합니다.

  4. Auto Suspend 가 설정되어 있는지 확인합니다.

  5. Suspend After (min) 필드에 웨어하우스가 일시 중단되기 전에 경과해야 하는 시간(분)을 입력합니다.

  6. Save Warehouse 를 선택합니다.

SQL

분 단위가 아닌 초 단위로 지정되는 자동 일시 중단 시간 제한을 변경하려면 ALTER WAREHOUSE 명령을 사용하십시오. 예:

ALTER WAREHOUSE my_wh SET AUTO_SUSPEND = 600;
Copy