스키마:

ACCOUNT_USAGE , READER_ACCOUNT_USAGE

QUERY_HISTORY 뷰

이 Account Usage 뷰는 지난 365일(1년) 내 다양한 차원(시간 범위, 세션, 사용자, 웨어하우스 등)별로 Snowflake 쿼리 기록을 쿼리하는 데 사용할 수 있습니다.

이 뷰는 ACCOUNT_USAGE 및 READER_ACCOUNT_USAGE 스키마 모두에서 사용할 수 있으며 다음과 같은 차이점이 있습니다.

  • 다음 열은 오직 독자 계정 뷰에서만 사용할 수 있습니다.

    • READER_ACCOUNT_NAME

    • READER_ACCOUNT_DELETED_ON

또는 QUERY_HISTORY로도 명명된 Information Schema 테이블 함수를 호출할 수 있지만, 이 테이블 함수는 결과를 지난 7일간의 활동으로 제한하는 반면에 Account Usage 뷰의 경우 365일간의 활동을 표시합니다. QUERY_HISTORY 함수에 대한 설명 을 참조하십시오.

참고 항목:

다음 테이블의 Available only in reader account usage views 열은 QUERY_HISTORY 열을 READER_ACCOUNT_USAGE 스키마에서 사용할 수 있는지 여부를 나타냅니다.

열 이름

데이터 타입

설명

Available only in reader account usage views

reader_account_name

VARCHAR

SQL 문이 실행된 독자 계정의 이름입니다.

query_id

VARCHAR

SQL 문의 내부/시스템 생성 식별자입니다.

query_text

VARCHAR

SQL 문의 텍스트입니다. 한도는 100K자입니다. 100K자를 초과하는 SQL 문은 잘립니다.

database_id

NUMBER

사용 중이었던 데이터베이스의 내부/시스템 생성 식별자입니다.

database_name

VARCHAR

컴파일 시 쿼리 컨텍스트에 지정된 데이터베이스입니다.

schema_id

NUMBER

사용 중이었던 스키마의 내부/시스템 생성 식별자입니다.

schema_name

VARCHAR

컴파일 시 쿼리 컨텍스트에 지정된 스키마입니다.

query_type

VARCHAR

DML, 쿼리 등입니다. 쿼리가 실패한 경우, 쿼리 유형이 UNKNOWN 일 수 있습니다.

session_id

NUMBER

문을 실행한 세션입니다.

user_name

VARCHAR

쿼리를 실행한 사용자입니다.

role_name

VARCHAR

쿼리 당시 세션에서 활성 상태였던 역할입니다.

warehouse_id

NUMBER

사용된 웨어하우스의 내부/시스템 생성 식별자입니다.

warehouse_name

VARCHAR

쿼리가 실행된 웨어하우스입니다(있는 경우).

warehouse_size

VARCHAR

이 문이 실행될 때 웨어하우스의 크기입니다.

warehouse_type

VARCHAR

이 문이 실행될 때 웨어하우스의 유형입니다.

cluster_number

NUMBER

이 문이 실행된 클러스터(다중 클러스터 웨어하우스 내)입니다.

query_tag

VARCHAR

QUERY_TAG 세션 매개 변수를 통해 이 문에 대해 설정된 쿼리 태그입니다.

execution_status

VARCHAR

쿼리의 실행 상태. 유효한 값: success, fail, incident.

error_code

NUMBER

쿼리가 오류를 반환한 경우 오류 코드입니다.

error_message

VARCHAR

쿼리가 오류를 반환한 경우 오류 메시지입니다.

start_time

TIMESTAMP_LTZ

문 시작 시간(현지 타임존)입니다.

end_time

TIMESTAMP_LTZ

문 종료 시간(현지 타임존)입니다.

total_elapsed_time

NUMBER

경과 시간(밀리초)입니다.

bytes_scanned

NUMBER

이 문이 스캔한 바이트 수입니다.

percentage_scanned_from_cache

FLOAT

로컬 디스크 캐시에서 스캔한 데이터의 백분율입니다. 값의 범위는 0.0에서 1.0입니다. 실제 백분율을 얻으려면 100을 곱하십시오.

bytes_written

NUMBER

작성된 바이트 수입니다(예: 테이블에 로딩될 때).

bytes_written_to_result

NUMBER

결과 오브젝트에 작성된 바이트 수입니다. 예를 들어, select * from . . . 은 선택 항목에 있는 각 필드를 나타내는 표 형식의 결과 세트를 생성합니다. . . 일반적으로, 결과 오브젝트는 쿼리의 결과로 생성된 모든 것을 나타내고 BYTES_WRITTEN_TO_RESULT 는 반환된 결과의 크기를 나타냅니다.

bytes_read_from_result

NUMBER

결과 오브젝트에서 읽은 바이트 수입니다.

rows_produced

NUMBER

이 문이 생성한 행 수입니다. ROWS_PRODUCED 열은 향후 릴리스에서 더 이상 사용되지 않습니다. ROWS_PRODUCED 열의 값이 항상 쿼리의 영향을 받는 논리적 행 수를 반영하는 것은 아닙니다. ROWS_INSERTED, ROWS_UPDATED, ROWS_WRITTEN_TO RESULTS 또는 ROWS_DELETED 열을 사용하는 것이 좋습니다.

rows_inserted

NUMBER

쿼리가 삽입한 행 수입니다.

rows_updated

NUMBER

쿼리가 업데이트한 행 수입니다.

rows_deleted

NUMBER

쿼리가 삭제한 행 수입니다.

rows_unloaded

NUMBER

데이터 내보내기 중 언로딩된 행 수입니다.

bytes_deleted

NUMBER

쿼리가 삭제한 바이트 수입니다.

partitions_scanned

NUMBER

스캔한 마이크로 파티션의 수입니다.

partitions_total

NUMBER

이 쿼리에 포함된 모든 테이블의 총 마이크로 파티션입니다.

bytes_spilled_to_local_storage

NUMBER

로컬 디스크로 유출된 데이터의 볼륨입니다.

bytes_spilled_to_remote_storage

NUMBER

원격 디스크로 유출된 데이터의 볼륨입니다.

bytes_sent_over_the_network

NUMBER

네트워크를 통해 전송된 데이터의 볼륨입니다.

compilation_time

NUMBER

컴파일 시간(밀리초)입니다.

execution_time

NUMBER

실행 시간(밀리초)입니다.

queued_provisioning_time

NUMBER

웨어하우스 큐에서 소요된 시간(밀리초)으로, 웨어하우스 생성, 재개 또는 크기 조정으로 인해 웨어하우스 컴퓨팅 리소스가 프로비저닝되기를 기다리는 데 걸린 시간입니다.

queued_repair_time

NUMBER

웨어하우스 큐에서 소요된 시간(밀리초)으로, 웨어하우스의 컴퓨팅 리소스가 복구되기를 기다리는 데 걸린 시간입니다.

queued_overload_time

NUMBER

현재 쿼리 워크로드로 인해 웨어하우스가 오버로드되어 웨어하우스 큐에서 소요된 시간(밀리초)입니다.

transaction_blocked_time

NUMBER

동시 DML에 의해 차단된 시간(밀리초)입니다.

outbound_data_transfer_cloud

VARCHAR

데이터를 다른 리전 및/또는 클라우드로 언로딩하는 문에 대한 대상 클라우드 공급자입니다.

outbound_data_transfer_region

VARCHAR

데이터를 다른 리전 및/또는 클라우드로 언로딩하는 문에 대한 대상 리전입니다.

outbound_data_transfer_bytes

NUMBER

Snowflake 테이블에서 데이터를 언로드하는 명령에서 전송된 바이트 수입니다.

inbound_data_transfer_cloud

VARCHAR

데이터를 다른 리전 및/또는 클라우드에서 로딩하는 문에 대한 소스 클라우드 공급자입니다.

inbound_data_transfer_region

VARCHAR

데이터를 다른 리전 및/또는 클라우드에서 로딩하는 문에 대한 소스 리전입니다.

inbound_data_transfer_bytes

NUMBER

다른 계정에서 복제 작업으로 전송된 바이트 수입니다. 원본 계정은 현재 계정과 동일한 리전에 있을 수도 있고 다른 리전에 있을 수도 있습니다.

list_external_files_time

NUMBER

외부 파일을 나열하는 데 소요된 시간(밀리초)입니다.

credits_used_cloud_services

NUMBER

클라우드 서비스에 사용된 크레딧 수입니다. 이 값은 클라우드 서비스 조정 을 고려하지 않으므로 청구되는 크레딧보다 클 수 있습니다. 실제로 청구된 크레딧 수를 확인하려면 METERING_DAILY_HISTORY 뷰 에 대해 쿼리를 실행하십시오.

reader_account_deleted_on

TIMESTAMP_LTZ

독자 계정이 삭제된 시간 및 날짜(UTC 타임존 기준)입니다.

release_version

VARCHAR

major_release.minor_release.patch_release 형식의 릴리스 버전입니다.

external_function_total_invocations

NUMBER

이 쿼리가 원격 서비스를 호출한 총 횟수입니다. 중요한 세부 정보는 사용법 노트를 참조하십시오.

external_function_total_sent_rows

NUMBER

이 쿼리가 모든 원격 서비스에 대한 모든 호출에서 보낸 총 행 수입니다.

external_function_total_received_rows

NUMBER

이 쿼리가 모든 원격 서비스에 대한 모든 호출에서 수신한 총 행 수입니다.

external_function_total_sent_bytes

NUMBER

이 쿼리가 모든 원격 서비스에 대한 모든 호출에서 보낸 총 바이트 수입니다.

external_function_total_received_bytes

NUMBER

이 쿼리가 모든 원격 서비스에 대한 모든 호출에서 수신한 총 바이트 수입니다.

query_load_percent

NUMBER

이 쿼리 실행을 위해 웨어하우스에 있는 활성 컴퓨팅 리소스의 대략적인 백분율입니다.

is_client_generated_statement

BOOLEAN

쿼리가 클라이언트에서 생성되었는지 여부를 나타냅니다.

query_acceleration_bytes_scanned

NUMBER

쿼리 가속 서비스 에서 스캔한 바이트의 수입니다.

query_acceleration_partitions_scanned

NUMBER

쿼리 가속 서비스에서 스캔한 파티션의 수입니다.

query_acceleration_upper_limit_scale_factor

NUMBER

쿼리가 혜택을 받았을 상한 배율 입니다.

transaction_id

NUMBER

문이 트랜잭션 내에서 실행되지 않는 경우 문 또는 0을 포함하는 트랜잭션의 ID 입니다.

child_queries_wait_time

NUMBER

메모이제이션 가능 함수 를 호출할 때 캐시된 조회 완료에 걸리는 시간(밀리초)입니다.

role_type

VARCHAR

쿼리를 실행한 APPLICATION, DATABASE_ROLE 또는 ROLE 을 지정합니다.

query_hash

VARCHAR

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

query_hash_version

NUMBER

QUERY_HASH 계산에 사용되는 논리 버전 입니다.

query_parameterized_hash

VARCHAR

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

query_parameterized_hash_version

NUMBER

QUERY_PARAMETERIZED_HASH 계산에 사용되는 논리 버전 입니다.

secondary_role_stats

VARCHAR

쿼리에서 평가된 보조 역할에 관한 3개의 필드(세션에 따른 보조 역할 목록 또는 ALL, 보조 역할의 수, 각 보조 역할에 대한 내부/시스템 생성 ID0)가 포함된 JSON 형식의 문자열입니다. ID의 개수는 최대 50개입니다.

rows_written_to_result

NUMBER

결과 오브젝트에 작성된 행 수입니다. CREATE TABLE AS SELECT(CTAS) 및 모든 DML 작업의 경우 이 결과는 1 입니다.

query_retry_time

NUMBER

실행 가능한 오류로 인해 발생한 쿼리 재시도의 총 실행 시간(밀리초)입니다. 자세한 내용은 쿼리 재시도 열 을 참조하십시오.

query_retry_cause

VARIANT

실행 가능한 오류에 대한 오류 메시지 배열입니다. 배열에는 각 쿼리 재시도에 대한 하나의 오류 메시지가 포함됩니다. 쿼리 재시도가 없으면 배열은 비어 있습니다. 자세한 내용은 쿼리 재시도 열 을 참조하십시오.

fault_handling_time

NUMBER

실행 가능하지 않은 오류로 인해 발생한 쿼리 재시도의 총 실행 시간(밀리초)입니다. 자세한 내용은 쿼리 재시도 열 을 참조하십시오.

사용법 노트

일반

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

  • EXTERNAL_FUNCTION_TOTAL_INVOCATIONS, EXTERNAL_FUNCTION_TOTAL_SENT_ROWS, EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS, EXTERNAL_FUNCTION_TOTAL_SENT_BYTES, EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES 열의 값은 다음을 비롯한 여러 요인의 영향을 받습니다.

    • SQL 문에 있는 외부 함수의 수입니다.

    • 각 원격 서비스에 보낸 배치당 행 수입니다.

    • 일시적인 오류(예: 예상 시간 내에 응답이 수신되지 않았기 때문)로 인한 재시도 횟수입니다.

쿼리 재시도 열

성공적으로 완료하려면 쿼리를 한 번 이상 다시 시도해야 할 수도 있습니다. 쿼리 재시도가 발생하는 원인은 여러 가지 있을 수 있습니다. 이러한 원인 중 일부는 실행 가능 합니다. 즉, 사용자가 특정 쿼리에 대한 쿼리 재시도를 줄이거나 없애기 위해 변경할 수 있습니다. 예를 들어 메모리 부족 오류로 인해 쿼리를 다시 시도하는 경우 웨어하우스 설정을 수정하면 문제가 해결될 수 있습니다.

일부 쿼리 재시도는 실행 불가능한 오류로 인해 발생합니다. 즉, 쿼리 재시도를 방지하기 위해 사용자가 변경할 수 있는 것이 없습니다. 예를 들어 네트워크 중단으로 인해 쿼리가 다시 시도될 수 있습니다. 이 경우 쿼리 재시도를 방해할 수 있는 쿼리 또는 쿼리를 실행하는 웨어하우스에는 변경 사항이 없습니다.

QUERY_RETRY_TIME, QUERY_RETRY_CAUSE 및 FAULT_HANDLING_TIME 열은 재시도되는 쿼리를 최적화하고 쿼리 성능의 변동을 더 잘 이해하는 데 도움이 될 수 있습니다.

하이브리드 테이블

다음 지침은 QUERY_HISTORY 뷰를 사용하는 동안 하이브리드 테이블에 대해 쿼리를 실행하는 것에 관한 지침입니다.

  • 하이브리드 테이블에 대해서만 작동하는 단기 실행 쿼리는 더 이상 이 뷰 또는 QUERY_HISTORY (Information Schema 테이블 함수)에 레코드를 생성하지 않습니다. 이러한 쿼리를 모니터링하려면 AGGREGATE_QUERY_HISTORY 를 사용하십시오. 이 뷰를 사용하면 추세와 문제에 대한 처리량이 높은 운영 워크로드를 더 쉽게 모니터링할 수 있습니다.

  • 하이브리드 테이블에 대해서만 독점적으로 작동하는 단기 실행 쿼리도 Snowsight 에서 검사할 수 있는 쿼리 프로필을 더 이상 제공하지 않습니다.

  • 다음 조건 중 하나라도 충족되면 하이브리드 테이블에 대한 쿼리는 QUERY_HISTORY 뷰에 레코드와 쿼리 프로필을 생성합니다.

    • 하이브리드 테이블 타입이 아닌 모든 테이블 유형에 대해 쿼리가 실행됩니다. 이 조건은 기존의 비 Unistore 워크로드에 대한 동작 변경이 없음을 보장합니다.

    • failed_with_incident 의 EXECUTION_STATUS로 인해 쿼리가 실패합니다(QUERY_HISTORY 참조). 이 조건으로 실패한 특정 쿼리를 조사하고 보고하여 지원을 받을 수 있도록 보장합니다.

    • 쿼리가 약 500밀리초 이상 실행 중입니다. 이 조건으로 느린 쿼리의 성능 문제를 조사할 수 있도록 보장합니다.

    • 쿼리 결과 크기가 너무 큽니다.

    • 쿼리가 Snowflake 트랜잭션과 연결됩니다.

    • 쿼리에 부작용이 있는 시스템 함수가 포함되어 있습니다.

    • 쿼리가 SELECT, INSERT, DELETE, UPDATE, MERGE 문 유형 중 하나가 아닙니다.

    • 쿼리가 SnowSQL, Snowsight 또는 Classic Console에서 실행됩니다. 이 조건으로 전체 쿼리 프로필을 수동으로 생성하여 특정 쿼리가 장기 실행으로 분류되지 않은 경우에도 특정 쿼리에 대한 성능 문제를 조사할 수 있도록 보장합니다.

    • 쿼리가 위의 기준을 충족하지 않는 경우에도 쿼리를 주기적으로 샘플링하여 QUERY_HISTORY 뷰 및 쿼리 프로필에 레코드를 생성하여 조사에 도움을 줄 수도 있습니다.

PUT 및 GET 명령

PUTGET 명령의 경우 QUERY_HISTORY 에서 success 의 EXECUTION_STATUS가 데이터 파일이 성공적으로 업로드되거나 다운로드되었다는 것을 의미하지 않습니다. 대신, 이 상태는 Snowflake가 파일 전송을 진행하기 위한 승인을 받았음을 나타냅니다.