스키마:

ACCOUNT_USAGE

TABLE_QUERY_PRUNING_HISTORY 뷰

이 Account Usage 뷰를 사용하면 쿼리 실행 동안 데이터 액세스 패턴을 더 잘 이해할 수 있습니다.

이 뷰는 COLUMN_QUERY_PRUNING_HISTORY 뷰 와 함께 사용할 수 있습니다. 예를 들어, TABLE_QUERY_PRUNING_HISTORY 뷰를 사용하여 대상 테이블에 대한 액세스를 식별한 다음, COLUMN_QUERY_PRUNING_HISTORY 뷰를 사용하여 해당 테이블에서 자주 사용되는 열을 식별할 수 있습니다.

특히, 이러한 뷰는 클러스터링 키 에 대해 보다 합리적인 선택을 하는 데 도움이 될 수 있습니다.

이 뷰의 각 행은 주어진 시간 간격 내에서 특정 테이블에 대한 쿼리 정리 기록을 나타냅니다. 데이터는 시간 간격을 기준으로 집계되며 실행된 쿼리 수, 스캔된 파티션, 정리된 파티션, 스캔된 행, 정리된 행, 일치하는 행 수에 대한 정보를 포함합니다.

TABLE_PRUNING_HISTORY 뷰쿼리 정리 섹션도 참조하세요.

열 이름

데이터 타입

설명

INTERVAL_START_TIME

TIMESTAMP_LTZ

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

INTERVAL_END_TIME

TIMESTAMP_LTZ

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

TABLE_ID

NUMBER

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

TABLE_NAME

VARCHAR

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

SCHEMA_ID

NUMBER

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

SCHEMA_NAME

VARCHAR

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

DATABASE_ID

NUMBER

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

DATABASE_NAME

VARCHAR

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

WAREHOUSE_ID

NUMBER

쿼리를 실행하는 데 사용된 웨어하우스의 내부/시스템 생성 식별자입니다.

WAREHOUSE_NAME

VARCHAR

쿼리를 실행한 웨어하우스의 이름입니다.

QUERY_HASH

VARCHAR

표준화된 SQL 텍스트를 기반으로 계산된 해시 값 입니다.

QUERY_PARAMETERIZED_HASH

VARCHAR

매개 변수가 있는 쿼리를 기반으로 계산된 해시 값 입니다.

NUM_QUERIES

NUMBER

이 특정 QUERY_HASH 값을 사용하고 이 웨어하우스를 사용하고 이 테이블에 액세스하여 이 시간 범위에서 실행된 쿼리의 수입니다.

AGGREGATE_QUERY_ELAPSED_TIME

NUMBER

NUM_QUERIES로 정의된 쿼리의 총 경과 시간(밀리초)입니다. 이 합계에는 컴파일 및 실행과 관련되지 않은 큐 대기 시간 및 기타 시간이 포함됩니다.

AGGREGATE_QUERY_COMPILATION_TIME

NUMBER

NUM_QUERIES로 정의된 쿼리의 총 컴파일 시간(밀리초)입니다.

AGGREGATE_QUERY_EXECUTION_TIME

NUMBER

NUM_QUERIES로 정의된 쿼리의 총 실행 시간(밀리초)입니다.

PARTITIONS_SCANNED

NUMBER

NUM_QUERIES로 정의된 쿼리에 대해 이 테이블에서 스캔한 파티션 수입니다.

PARTITIONS_PRUNED

NUMBER

NUM_QUERIES로 정의된 쿼리에 대해 이 테이블에서 정리된 파티션 수입니다. 이러한 파티션은 쿼리 처리 중에 제거되고 스캔되지 않아 쿼리 효율성이 향상되었습니다.

ROWS_SCANNED

NUMBER

NUM_QUERIES로 정의된 쿼리에 대해 이 테이블에서 스캔한 행 수입니다.

ROWS_PRUNED

NUMBER

NUM_QUERIES로 정의된 쿼리에 대해 이 테이블에서 정리된 행 수입니다. 이러한 행은 쿼리 처리 중에 제거되고 스캔되지 않아 쿼리의 효율성이 향상되었습니다.

ROWS_MATCHED

NUMBER

이 테이블에서 NUM_QUERIES로 정의된 쿼리를 스캔하는 동안 WHERE 절 필터와 일치한 행의 수입니다.

사용법 노트

  • 뷰의 대기 시간은 최대 4시간입니다.

  • 데이터는 1년 동안 보관됩니다.

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

  • 푸시다운 최적화의 이점을 누릴 수 없는 복잡한 필터링 조건의 경우, 필터링 조건과 일치하지 않더라도 테이블 스캔 작업 중에 행이 필터링되지 않을 수 있습니다. 따라서 이러한 행은 ROWS_MATCHED 값에서 계산됩니다.

  • USAGE_VIEWER 데이터베이스 역할이 부여된 사용자 및 역할이 뷰에 액세스할 수 있습니다. 자세한 내용은 SNOWFLAKE 데이터베이스 역할 섹션을 참조하십시오.

  • 이 뷰는 쿼리당 가장 오래 실행되는 테이블 스캔 1,000개에 대한 데이터를 유지합니다. 매우 복잡한 쿼리만 이 스캔 횟수를 초과하므로 데이터가 거의 생략되지 않습니다.

첫 번째 쿼리는 하나 이상의 행이 정리된 특정 날짜에 특정 테이블에 대한 쿼리의 정리 기록을 반환하는 간단한 함수 예제입니다. 결과의 각 행은 WHERE절(INTERVAL_START_TIME)에 지정된 날짜에 완료된 쿼리에 대한 1시간의 기간에 속합니다.

이 쿼리의 sensor_data_ts 테이블에는 5,356,800개 행의 합성 시계열 데이터가 포함되어 있습니다. 여기에 표시된 모든 쿼리에 대해 테이블 행의 정확히 절반(2,678,400개)이 정리되었습니다. 일치하는 행의 수는 이러한 쿼리에 따라 다릅니다.

SELECT interval_start_time, interval_end_time, table_id, table_name,
    num_queries, query_hash, rows_scanned, rows_pruned, rows_matched
  FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_QUERY_PRUNING_HISTORY
  WHERE interval_start_time LIKE '2025-04-24%'
    AND table_name='SENSOR_DATA_TS'
    AND rows_pruned > 0
  ORDER BY 1;
Copy
+-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------+
| INTERVAL_START_TIME           | INTERVAL_END_TIME             | TABLE_ID | TABLE_NAME     | NUM_QUERIES | QUERY_HASH                       | ROWS_SCANNED | ROWS_PRUNED | ROWS_MATCHED |
|-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------|
| 2025-04-24 14:00:00.000 -0700 | 2025-04-24 15:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 833f4ec4ebbda62c7882e1839faec799 |      2678400 |     2678400 |            5 |
| 2025-04-24 14:00:00.000 -0700 | 2025-04-24 15:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 94d16d2fa0892247d27066e45b58d3e4 |      2678400 |     2678400 |            5 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 24e89f5c01209d7b395f56559f893dc8 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 71c9c6570ef849e66f83af0625b793a2 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | c75cb64d446c1ba222ac14ebd1923641 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 15:00:00.000 -0700 | 2025-04-24 16:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 5a3784c59fc788804c903d96698dd969 |      2678400 |     2678400 |            5 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 069a076d4d6850e3d242fccf498c7c6d |      2678400 |     2678400 |       216642 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 4c9c5aacb7a61fc6858d107c5c46fb14 |      2678400 |     2678400 |       216642 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 3e509721380b262906c62c76107e46c9 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 9f7e607fe48faa18e332f65cde49f037 |      2678400 |     2678400 |      2678400 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | b4488d8a84ab18b00dd6b2fead4a4cb4 |      2678400 |     2678400 |       394106 |
| 2025-04-24 17:00:00.000 -0700 | 2025-04-24 18:00:00.000 -0700 |   652324 | SENSOR_DATA_TS |           1 | 157d775a79c5bae120fb5db9f7d8d027 |      2678400 |     2678400 |       216642 |
+-------------------------------+-------------------------------+----------+----------------+-------------+----------------------------------+--------------+-------------+--------------+

다음 예제에서는 주어진 시간에 지정된 웨어하우스에서 실행되는 쿼리의 정리 효율성을 결정하는 데 도움이 되도록 각 테이블의 “정리 비율”을 계산합니다. 이 쿼리는 쿼리당 스캔된 파티션 수도 반환하므로, 스캔해야 하는 데이터의 볼륨에 대한 쿼리 성능을 이해하는 데 도움이 됩니다.

이 쿼리의 결과를 감안할 때 사용자는 sensor_data_tssensor_data1 보다 훨씬 더 많이 액세스되지만 이러한 쿼리는 일반적으로 시간이 덜 걸리고 마이크로 파티션을 훨씬 더 적게 스캔한다는 결론을 내릴 수 있습니다.

SELECT
    SUM(total_execution_time) as sum_exec_time,
    SUM(num_queries) as sum_num_queries,
    SUM(partitions_pruned)/SUM(partitions_pruned+partitions_scanned) AS pruning_ratio,
    SUM(partitions_scanned)/SUM(num_queries) AS partitions_scanned_per_query,
    table_name,
    schema_name,
    database_name
  FROM SNOWFLAKE.ACCOUNT_USAGE.TABLE_QUERY_PRUNING_HISTORY
  WHERE interval_start_time > '2025-04-25 12:00:00.000 -0700'
    AND warehouse_name = 'SENSORS_WH'
  GROUP BY ALL
  ORDER BY 1 DESC;
Copy
+---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------+
| SUM_EXEC_TIME | SUM_NUM_QUERIES | PRUNING_RATIO | PARTITIONS_SCANNED_PER_QUERY | TABLE_NAME     | SCHEMA_NAME    | DATABASE_NAME |
|---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------|
|       1938743 |           19283 |      0.230000 |                  1800.000000 | SENSOR_DATA1   | SENSORS_SCHEMA | SENSORS_DB    |
|        123732 |           39320 |      0.950000 |                    12.000000 | SENSOR_DATA_TS | SENSORS_SCHEMA | SENSORS_DB    |
+---------------+-----------------+---------------+------------------------------+----------------+----------------+---------------+