SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS

SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS

SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS() 함수는 테이블에 Automatic Clustering을 활성화하는 것과 관련된 예상 비용을 반환해요. 이 함수는 다음을 수행하는 데 사용돼요.

  • 테이블을 처음으로 클러스터링하는 비용을 추정.
  • 테이블의 클러스터 키를 변경하는 비용을 추정.
  • 가능할 때, 테이블이 지정된 키 주위로 클러스터링된 후 이를 유지하는 것과 관련된 비용을 추정. 때로는 테이블이 향후 유지 비용을 추정할 만큼 더 많은 DML 기록이 필요할 수도 있어요.

중요

SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS 함수가 반환하는 비용 추정치는 최선 노력(best effort)이에요. 실제 실현 비용은 추정치에서 최대 100%(드물게는 몇 배)까지 달라질 수 있어요.

출처: Snowflake SQL Reference

본문

문법

SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS( '<table_name>' ,
[ '( <expr1> [ , <expr2> ... ] )' ] )

인자

컬럼 이름 또는 표현식을 하나만 전달해도 괄호 안에 있어야 해요.

이 인자는 클러스터 키가 없는 테이블에 필수예요. 인자를 생략하면 오류가 반환돼요.

이 인자는 클러스터 키가 있는 테이블에 선택적이에요. 인자를 생략하면 함수는 테이블의 현재 클러스터 키를 사용해 테이블을 클러스터링하는 비용을 추정해요.

반환

VARCHAR 타입 값. 반환된 문자열은 JSON 형식이며 다음 이름/값 쌍을 포함해요.

접근 제어 요구 사항

비용을 추정하는 데 필요한 권한은 테이블을 읽고 클러스터 키를 변경하는 데 필요한 권한과 같아요. 다음 권한이 필요해요.

  • 테이블에 대한 SELECT 및 INSERT 권한, 또는 테이블에 대한 OWNERSHIP 권한.
  • 상위 스키마와 데이터베이스에 대한 USAGE 또는 OWNERSHIP 권한.

사용 메모

  • SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS 함수가 반환하는 비용 추정치는 테이블의 마이크로 파티션 일부를 샘플링하고 클러스터링 실행 시간을 포착하는 것을 기반으로 해요. 샘플링된 특정 마이크로 파티션과 시스템 속도에 따라 함수 실행 간 비용 추정치가 다를 수 있어요.
  • 최상의 정확도를 위해 SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS를 여러 번 실행하고 결과를 평균할 수 있어요. 이 함수는 샘플 클러스터링 작업을 사용하고 실행 시간을 수집해요. 제공된 비용 추정치는 시스템 속도에 따라 변동될 수 있어요. 함수를 여러 번 실행하고 결과를 평균하면 더 정확한 비용 추정치를 얻을 수 있어요.
  • 유지 비용 추정치가 부정확한 가장 흔한 이유는 추정치의 기반이 된 과거 DML 패턴이 미래 DML 패턴과 일치하지 않았기 때문이에요.
  • Snowflake는 대부분의 경우 일회성 비용 추정치를, 일부 경우 유지 비용 추정치를 제공할 수 있어요. 함수가 유지 비용 추정치를 제공할 수 없으면 Snowflake는 출력에 이유를 포함해요.

예제

myTable 테이블의 클러스터 키로 컬럼 day와 tenantId를 정의하는 것과 관련된 예상 비용을 반환해요.

SELECT SYSTEM$ESTIMATE_AUTOMATIC_CLUSTERING_COSTS('myTable', '(day, tenantId)');
{
  "reportTime": "Fri, 12 Jul 2024 01:06:18 GMT",
  "clusteringKey": "LINEAR(day, tenantId)",
  "initial": {
    "unit": "Credits",
    "value": 98.2,
    "comment": "Total upper bound of one-time cost"
  },
  "maintenance": {
    "unit": "Credits",
    "value": 10.0,
    "comment": "Daily maintenance cost estimate provided based on DML history from the
    past seven days."
  }
}

더 알아보기