스키마:

ACCOUNT_USAGE

TABLE_PRUNING_HISTORY 뷰

이 Account Usage 뷰를 사용하면 모든 테이블의 정리 효율성을 확인하고 테이블의 기본(자연스러운) 데이터 순서가 정리에 미치는 영향을 이해할 수 있습니다.

스캔하고 정리된 파티션의 총 개수(PARTITIONS_SCANNED + PARTITIONS_PRUNED)와 정리된 파티션의 수(PARTITIONS_PRUNED)를 비교할 수 있습니다.

또한 이 뷰를 사용하면 테이블에 대해 자동 클러스터링검색 최적화 를 활성화하기 전후에 정리에 미치는 효과를 비교할 수도 있습니다.

열 이름

데이터 타입

설명

START_TIME

TIMESTAMP_LTZ

쿼리가 실행된 시간 범위의 시작(시간 기준)입니다.

END_TIME

TIMESTAMP_LTZ

쿼리가 실행된 시간 범위의 끝(시간 기준)입니다.

TABLE_ID

NUMBER

쿼리된 테이블의 내부/시스템 생성 식별자입니다.

TABLE_NAME

TEXT

쿼리된 테이블의 이름입니다.

SCHEMA_ID

NUMBER

쿼리된 테이블을 포함하는 스키마에 대한 내부/시스템 생성 식별자입니다.

SCHEMA_NAME

TEXT

쿼리된 테이블을 포함하는 스키마의 이름입니다.

DATABASE_ID

NUMBER

쿼리된 테이블을 포함하는 데이터베이스의 내부/시스템 생성 식별자입니다.

DATABASE_NAME

TEXT

쿼리된 테이블을 포함하는 데이터베이스의 이름입니다.

NUM_SCANS

NUMBER

START_TIME 및 END_TIME 윈도우 중에 테이블에 대한 모든 쿼리(SELECT 문 및 DML 문 포함)의 스캔 작업 수입니다. 주어진 쿼리로 인해 동일한 테이블에 대해 여러 스캔 작업이 수행될 수 있습니다.

PARTITIONS_SCANNED

NUMBER

NUM_SCANS 에 설명된 스캔 작업 중에 스캔된 파티션 수입니다.

PARTITIONS_PRUNED

NUMBER

NUM_SCANS 에 설명된 스캔 작업 중에 정리된 파티션 수입니다.

ROWS_SCANNED

NUMBER

NUM_SCANS 에 설명된 스캔 작업 중 스캔된 행의 수입니다.

ROWS_PRUNED

NUMBER

NUM_SCANS 에 설명된 스캔 작업 중 정리된 행의 수입니다.

사용법 노트

  • 뷰의 지연 시간은 최대 6시간입니다.

  • 이 뷰에는 하이브리드 테이블 에 대한 정리 정보가 포함되지 않습니다.

지난 7일 동안 정리 효율성이 가장 낮은 상위 5개 테이블을 나열합니다.

SELECT
    table_id,
    ANY_VALUE(table_name) AS table_name,
    SUM(num_scans) AS total_num_scans,
    SUM(partitions_scanned) AS total_partitions_scanned,
    SUM(partitions_pruned) AS total_partitions_pruned,
    SUM(rows_scanned) AS total_rows_scanned,
    SUM(rows_pruned) AS total_rows_pruned
  FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_PRUNING_HISTORY
  WHERE start_time >= DATEADD(day, -7, CURRENT_TIMESTAMP())
  GROUP BY table_id
  ORDER BY
    total_partitions_pruned / GREATEST(total_partitions_scanned + total_partitions_pruned, 1),
    total_partitions_scanned DESC
  LIMIT 5;
Copy
+----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------+
| TABLE_ID | TABLE_NAME     | TOTAL_NUM_SCANS | TOTAL_PARTITIONS_SCANNED | TOTAL_PARTITIONS_PRUNED | TOTAL_ROWS_SCANNED | TOTAL_ROWS_PRUNED |
|----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------|
|   308226 | SENSOR_DATA_TS |              11 |                       21 |                       1 |           52500000 |           2500000 |
|   185364 | MATCH          |              16 |                       14 |                       2 |             240968 |             34424 |
|   209932 | ORDER_HEADER   |               2 |                      300 |                      56 |          421051748 |          75350790 |
|   209922 | K7_T1          |             261 |                      261 |                      52 |              30421 |              3272 |
|   338948 | SENSOR_DATA_TS |               9 |                       15 |                       3 |           38880000 |           8035200 |
+----------+----------------+-----------------+--------------------------+-------------------------+--------------------+-------------------+

위의 예에서는 스캔된 파티션 수와 정리된 파티션 수의 합이 0일 때 0으로 나누지 못하도록 하기 위해 GREATEST 를 사용합니다.