- 스키마:
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개)이 정리되었습니다. 일치하는 행의 수는 이러한 쿼리에 따라 다릅니다.
다음 예제에서는 주어진 시간에 지정된 웨어하우스에서 실행되는 쿼리의 정리 효율성을 결정하는 데 도움이 되도록 각 테이블의 “정리 비율”을 계산합니다. 이 쿼리는 쿼리당 스캔된 파티션 수도 반환하므로, 스캔해야 하는 데이터의 볼륨에 대한 쿼리 성능을 이해하는 데 도움이 됩니다.
이 쿼리의 결과를 감안할 때 사용자는 sensor_data_ts 가 sensor_data1 보다 훨씬 더 많이 액세스되지만 이러한 쿼리는 일반적으로 시간이 덜 걸리고 마이크로 파티션을 훨씬 더 적게 스캔한다는 결론을 내릴 수 있습니다.