쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

SYS_QUERY_HISTORY

포커스 모드
SYS_QUERY_HISTORY - Amazon Redshift

SYS_QUERY_HISTORY를 사용하여 사용자 쿼리의 세부 정보를 봅니다. 각 행은 일부 필드에 대한 누적 통계가 있는 사용자 쿼리를 나타냅니다. 이 보기에는 데이터 정의 언어(DDL), 데이터 조작 언어(DML), 복사, 언로드 및 Amazon Redshift Spectrum과 같은 다양한 유형의 쿼리가 포함되어 있습니다. 여기에는 실행 중인 쿼리와 완료된 쿼리가 모두 포함됩니다.

SYS_QUERY_HISTORY는 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 시스템 테이블 및 뷰에 있는 데이터의 가시성 섹션을 참조하세요.

테이블 열

열 명칭 데이터 유형 설명
user_id 정수 쿼리를 제출한 사용자의 식별자입니다.
query_id bigint 쿼리 식별자입니다.
query_label character(320) 쿼리의 짧은 이름입니다.
transaction_id bigint 트랜잭션 식별자입니다.
session_id 정수 쿼리를 실행하는 프로세스의 프로세스 식별자입니다.
database_name character(128) 쿼리가 실행되었을 때 사용자가 연결된 데이터베이스의 이름.
query_type character(32) SELECT, INSERT, UPDATE, UNLOAD COPY, COMMAND, DDL, UTILITY, CTAS, OTHER 등의 쿼리 유형입니다.
status character(10) 쿼리의 상태입니다. 유효한 값: 계획 중, 대기됨, 실행 중, 반환 중, 실패, 취소됨 및 성공.
result_cache_hit 쿼리가 결과 캐시와 일치하는지를 나타냅니다.
start_time 타임스탬프 쿼리가 시작된 시간입니다.
end_time 타임스탬프 쿼리가 완료된 시간입니다.
경과 시간 bigint 쿼리에 소요된 총 시간(마이크로초)입니다.
queue_time bigint 서비스 클래스 쿼리 대기열에 소요된 총 시간(마이크로초)입니다.
execution_time bigint 서비스 클래스에서 실행 중인 총 시간(마이크로초)입니다.
error_message character(512) 쿼리가 실패한 이유입니다.
returned_rows bigint 클라이언트에게 반환되는 행 수입니다.
returned_bytes bigint 클라이언트에게 반환되는 바이트 수입니다.
query_text character(4000) 쿼리 문자열. 이 문자열은 잘릴 수 있습니다.
redshift_version character(256) 쿼리가 실행된 Amazon Redshift 버전입니다.
usage_limit character(150) 쿼리에서 도달한 사용량 제한 ID의 목록입니다.
compute_type varchar(32) 쿼리가 기본 클러스터에서 실행되는지 아니면 동시성 확장 클러스터에서 실행되는지를 나타냅니다. 가능한 값은 primary(기본 클러스터에서 쿼리 실행), secondary(보조 클러스터에서 쿼리 실행) 또는 primary-scale(동시성 클러스터에서 쿼리 실행)입니다. 이는 프로비전된 클러스터에만 적용됩니다.
compile_time bigint 쿼리 컴파일에 소요된 총시간(마이크로초)입니다.
planning_time bigint 쿼리 계획에 소요된 총시간(마이크로초)입니다.
lock_wait_time bigint 관계 잠금을 기다리는 데 소요된 총시간(마이크로초)입니다.
service_class_id 정수

서비스 클래스 ID입니다. 서비스 클래스 ID의 목록을 보려면 WLM 서비스 클래스 ID 섹션으로 이동하세요.

이 열은 프로비저닝된 클러스터에서 실행되는 쿼리에만 사용됩니다. Redshift Serverless에서 실행되는 쿼리의 경우, 이 열에는 -1이 포함됩니다.

service_class_name character(64)

서비스 클래스 이름입니다.

이 열은 프로비저닝된 클러스터에서 실행되는 쿼리에만 사용됩니다. Amazon Redshift Redshift Serverless에서 실행되는 쿼리의 경우. 이 열이 비어 있습니다.

query_priority character(20)

쿼리가 실행된 대기열의 우선순위. 가능한 값은 다음과 같습니다.

  • NULL

  • 가장 낮음

  • low

  • 정상

  • high

  • 가장 높음

NULL은 해당 쿼리에 쿼리 우선순위가 지원되지 않음을 의미합니다.

이 열은 프로비저닝된 클러스터에서 실행되는 쿼리에만 사용됩니다. Redshift Serverless에서 실행되는 쿼리의 경우. 이 열이 비어 있습니다.

short_query_accelerated character(10)

단기 쿼리 가속화(SQA)를 사용하여 쿼리를 가속했는지 여부. 가능한 값은 다음과 같습니다.

  • true

  • false

  • NULL

이 열은 프로비저닝된 클러스터에서 실행되는 쿼리에만 사용됩니다. Redshift Serverless에서 실행되는 쿼리의 경우. 이 열이 비어 있습니다.

user_query_hash character(40)

쿼리 리터럴을 포함하여 쿼리에서 생성된 쿼리 해시입니다. 동일한 쿼리 텍스트가 포함된 반복 쿼리는 user_query_hash 값이 동일합니다.

generic_query_hash character(40)

쿼리 리터럴을 제외한 쿼리에서 생성된 쿼리 해시입니다. 동일한 쿼리 텍스트가 포함되지만 다른 쿼리 리터럴이 있는 반복 쿼리는 generic_query_hash 값이 동일합니다.

query_hash_version 정수

쿼리에서 생성된 쿼리 해시의 버전 번호입니다.

result_cache_query_id 정수

쿼리에 결과 캐싱을 사용한 경우 이 필드 값은 캐시된 결과의 소스인 쿼리의 쿼리 ID입니다. 결과 캐싱을 사용하지 않은 경우 이 필드 값은 0입니다.

샘플 쿼리

다음 쿼리는 실행 중인 쿼리와 대기 중인 쿼리를 반환합니다.

SELECT user_id, query_id, transaction_id, session_id, status, trim(database_name) AS database_name, start_time, end_time, result_cache_hit, elapsed_time, queue_time, execution_time FROM sys_query_history WHERE status IN ('running','queued') ORDER BY start_time;

샘플 출력은 다음과 같습니다.

user_id | query_id | transaction_id | session_id | status | database_name | start_time | end_time | result_cache_hit | elapsed_time | queue_time | execution_time ---------+----------+----------------+------------+---------+---------------+---------------------------+----------------------------+------------------+--------------+------------+---------------- 101 | 760705 | 852337 | 1073832321 | running | tpcds_1t | 2022-02-15 19:03:19.67849 | 2022-02-15 19:03:19.739811 | f | 61321 | 0 | 0

다음 쿼리는 특정 쿼리의 쿼리 시작 시간, 종료 시간, 대기열 시간, 경과 시간, 계획 시간 및 기타 메타데이터를 반환합니다.

SELECT user_id, query_id, transaction_id, session_id, status, trim(database_name) AS database_name, start_time, end_time, result_cache_hit, elapsed_time, queue_time, execution_time, planning_time, trim(query_text) as query_text FROM sys_query_history WHERE query_id = 3093;

샘플 출력은 다음과 같습니다.

user_id | query_id | transaction_id | session_id | status | database_name | start_time | end_time | result_cache_hit | elapsed_time | queue_time | execution_time | planning_time | query_text --------+----------+----------------+------------+------------+---------------+----------------------------+----------------------------+------------------+--------------+------------+----------------+---------------+------------------------------------- 106 | 3093 | 11759 | 1073750146 | success | dev | 2023-03-16 16:53:17.840214 | 2023-03-16 16:53:18.106588 | f | 266374 | 0 | 105725 | 136589 | select count(*) from item;

다음은 가장 최근 SELECT 쿼리 10개를 나열하는 쿼리입니다.

SELECT query_id, transaction_id, session_id, start_time, elapsed_time, queue_time, execution_time, returned_rows, returned_bytes FROM sys_query_history WHERE query_type = 'SELECT' ORDER BY start_time DESC limit 10;

샘플 출력은 다음과 같습니다.

query_id | transaction_id | session_id | start_time | elapsed_time | queue_time | execution_time | returned_rows | returned_bytes ----------+----------------+------------+----------------------------+--------------+------------+----------------+---------------+---------------- 526532 | 61093 | 1073840313 | 2022-02-09 04:43:24.149603 | 520571 | 0 | 481293 | 1 | 3794 526520 | 60850 | 1073840313 | 2022-02-09 04:38:27.24875 | 635957 | 0 | 596601 | 1 | 3679 526508 | 60803 | 1073840313 | 2022-02-09 04:37:51.118835 | 563882 | 0 | 503135 | 5 | 17216 526505 | 60763 | 1073840313 | 2022-02-09 04:36:48.636224 | 649337 | 0 | 589823 | 1 | 652 526478 | 60730 | 1073840313 | 2022-02-09 04:36:11.741471 | 14611321 | 0 | 14544058 | 0 | 0 526467 | 60636 | 1073840313 | 2022-02-09 04:34:11.91463 | 16711367 | 0 | 16633767 | 1 | 575 511617 | 617946 | 1074009948 | 2022-01-20 06:21:54.44481 | 9937090 | 0 | 9899271 | 100 | 12500 511603 | 617941 | 1074259415 | 2022-01-20 06:21:45.71744 | 8065081 | 0 | 7582500 | 100 | 8889 511595 | 617935 | 1074128320 | 2022-01-20 06:21:44.030876 | 1051270 | 0 | 1014879 | 1 | 72 511584 | 617931 | 1074030019 | 2022-01-20 06:21:42.764088 | 609033 | 0 | 485887 | 100 | 8438

다음 쿼리는 일별 선택 쿼리 수와 평균 쿼리 경과 시간을 보여줍니다.

SELECT date_trunc('day',start_time) AS exec_day, status, COUNT(*) AS query_cnt, AVG(datediff (microsecond,start_time,end_time)) AS elapsed_avg FROM sys_query_history WHERE query_type = 'SELECT' AND start_time >= '2022-01-14' AND start_time <= '2022-01-18' GROUP BY exec_day, status ORDER BY exec_day, status;

샘플 출력은 다음과 같습니다.

exec_day | status | query_cnt | elapsed_avg ---------------------+---------+-----------+------------ 2022-01-14 00:00:00 | success | 5253 | 56608048 2022-01-15 00:00:00 | success | 7004 | 56995017 2022-01-16 00:00:00 | success | 5253 | 57016363 2022-01-17 00:00:00 | success | 5309 | 55236784 2022-01-18 00:00:00 | success | 8092 | 54355124

다음 쿼리는 일별 쿼리 경과 시간 성능을 보여줍니다.

SELECT distinct date_trunc('day',start_time) AS exec_day, query_count.cnt AS query_count, Percentile_cont(0.5) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS P50_runtime, Percentile_cont(0.8) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS P80_runtime, Percentile_cont(0.9) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS P90_runtime, Percentile_cont(0.99) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS P99_runtime, Percentile_cont(1.0) within group(ORDER BY elapsed_time) OVER (PARTITION BY exec_day) AS max_runtime FROM sys_query_history LEFT JOIN (SELECT date_trunc('day',start_time) AS day, count(*) cnt FROM sys_query_history WHERE query_type = 'SELECT' GROUP by 1) query_count ON date_trunc('day',start_time) = query_count.day WHERE query_type = 'SELECT' ORDER BY exec_day;

샘플 출력은 다음과 같습니다.

exec_day | query_count | p50_runtime | p80_runtime | p90_runtime | p99_runtime | max_runtime ---------------------+-------------+-------------+-------------+-------------+--------------+-------------- 2022-01-14 00:00:00 | 5253 | 16816922.0 | 69525096.0 | 158524917.8 | 486322477.52 | 1582078873.0 2022-01-15 00:00:00 | 7004 | 15896130.5 | 71058707.0 | 164314568.9 | 500331542.07 | 1696344792.0 2022-01-16 00:00:00 | 5253 | 15750451.0 | 72037082.2 | 159513733.4 | 480372059.24 | 1594793766.0 2022-01-17 00:00:00 | 5309 | 15394513.0 | 68881393.2 | 160254700.0 | 493372245.84 | 1521758640.0 2022-01-18 00:00:00 | 8092 | 15575286.5 | 68485955.4 | 154559572.5 | 463552685.39 | 1542783444.0 2022-01-19 00:00:00 | 5860 | 16648747.0 | 72470482.6 | 166485138.2 | 492038228.67 | 1693483241.0 2022-01-20 00:00:00 | 1751 | 15422072.0 | 69686381.0 | 162315385.0 | 497066615.00 | 1439319739.0 2022-02-09 00:00:00 | 13 | 6382812.0 | 17616161.6 | 21197988.4 | 23021343.84 | 23168439.0

다음 쿼리는 쿼리 유형 분포를 보여줍니다.

SELECT query_type, COUNT(*) AS query_count FROM sys_query_history GROUP BY query_type ORDER BY query_count DESC;

샘플 출력은 다음과 같습니다.

query_type | query_count ------------+------------- UTILITY | 134486 SELECT | 38537 DDL | 4832 OTHER | 768 LOAD | 768 CTAS | 748 COMMAND | 92

다음 예제에서는 여러 쿼리 간의 쿼리 해시 결과의 차이를 보여 줍니다. 다음 쿼리를 관찰합니다.

CREATE TABLE test_table (col1 INT); INSERT INTO test_table VALUES (1),(2); SELECT * FROM test_table; SELECT * FROM test_table; SELECT col1 FROM test_table; SELECT * FROM test_table WHERE col1=1; SELECT * FROM test_table WHERE col1=2; SELECT query_id, TRIM(user_query_hash) AS user_query_hash, TRIM(generic_query_hash) AS generic_query_hash, TRIM(query_text) AS text FROM sys_query_history ORDER BY start_time DESC LIMIT 10;

다음은 출력 샘플입니다.

query_id | user_query_hash | generic_query_hash | text ---------+-----------------+--------------------+---------- 24723049 | oPuFtjEPLTs= | oPuFtjEPLTs= | select query_id, trim(user_query_hash) as user_query_hash, trim(generic_query_hash) as generic_query_hash, query_hash_version, trim(query_text) as text from sys_query_history order by start_time\r\ndesc limit 20 24723045 | Gw2Kwdd8m2I= | IwfRu8/XAKI= | select * from test_table where col1=2 limit 100 24723041 | LNw2vx0GDXo= | IwfRu8/XAKI= | select * from test_table where col1=1 limit 100 24723036 | H+qep/c82Y8= | H+qep/c82Y8= | select col1 from test_table limit 100 24723033 | H+qep/c82Y8= | H+qep/c82Y8= | select * from test_table limit 100 24723029 | H+qep/c82Y8= | H+qep/c82Y8= | select * from test_table limit 100 24723023 | 50sirx9E1hU= | uO36Z1a/QYs= | insert into test_table values (1),(2) 24723021 | YSVnlivZHeo= | YSVnlivZHeo= | create table test_table (col1 int)

SELECT * FROM test_table;SELECT col1 FROM test_table;에는 열이 하나뿐이므로 동일한 user_query_hash 값이 포함됩니다. SELECT * FROM test_table WHERE col1=1;SELECT * FROM test_table WHERE col1=2;에는 user_query_hash 값이 다르지만 두 쿼리가 쿼리 리터럴 1과 2 외부에서 동일하므로 generic_query_hash 값은 동일합니다.

이 페이지에서

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.