[AWS] AWS Redshift 실행된 쿼리 및 Slow query 확인
l Version : AWS Redshift, Redshift Serverless
AWS Redshift에서 특정 시간이상 실행된 쿼리 또는 사용자에 의한 취소 쿼리 목록 및 실행시간, 실행된 쿼리 등을 확인하는 방법에 대해서 알아본다.
아래 스크립트는 3초 이상 실행된 쿼리 목록을 확인하여, WHERE 부분을 수정하여 사용자에 필요한 시간으로 변경하여 사용할 수 있다. 조회 결과는 오래 수행된 쿼리의 내림 차순으로 표시되며, S3 spectrum을 사용할 경우 외부 테이블에 대한 사용 정보도 함께 나태낸다. 쿼리 결과에서 elapsed_time은 전체 쿼리가 수행에 걸린 시간을 나타내므로 해당 시간이 클수록 느린 쿼리라고 판단할 수 있다.
select a.query_id, a.database_name, a.query_type, a.start_time, a.end_time, (a.elapsed_time * 1.0) / 1000 / 1000 as elapsed_time_sec, (a.execution_time * 1.0) / 1000 / 1000 as execution_time_sec, a.returned_rows, a.returned_bytes, a.query_text, b.source_type, -- Spectrum : S3, 연합쿼리 : PG b.duration as external_query_duration, b.total_partitions as s3_partition, b.qualified_partitions as s3_scan_partiton, b.scanned_files as s3_scan_file, b.returned_rows as s3_returned_rows, b.returned_bytes as s3_returned_bytes, b.file_format as s3_file_formant, b.file_location as s3_file_location, b.external_query_text as external_query_text, a.result_cache_hit, (a.queue_time * 1.0) / 1000 /1000 as queue_time_sec, a.status, a.error_message, a.user_id, a.transaction_id, a.session_id from SYS_QUERY_HISTORY as a left outer join SYS_EXTERNAL_QUERY_DETAIL as b on a.query_id = b.query_id where (a.elapsed_time * 1.0) / 1000 / 1000 > 3 -- 마이크로세컨을 세컨으로 계산하도록 변경. 숫자 변경하여 사용 and a.status in ('success', 'canceled') -- 사용자 쿼리가 성공 또는 사용자에 의한 취소 쿼리만 조회 /* 사용 가능 status value planning, queued, running, returning, failed, canceled, success */ and a.start_time >= '2023-01-11 01:00' -- UTC 시간 and a.end_time <= '2023-01-11 23:00' -- UTC 시간 order by elapsed_time desc |
[참고 자료]
l 쿼리 계획 : https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/c-the-query-plan.html
l 쿼리 요약 분석 : https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/c-analyzing-the-query-summary.html
l 쿼리 계획 분석 : https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/c-analyzing-the-query-plan.html
l 쿼리 히스토리 : https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/SYS_QUERY_HISTORY.html
l 외부 쿼리 상세 보기 : https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/SYS_EXTERNAL_QUERY_DETAIL.html
l 쿼리 세부 정보 : https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/SYS_QUERY_DETAIL.html
l 서버리스 사용량 확인 : https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/SYS_SERVERLESS_USAGE.html
2023-02-19 / Sungwook Kang / http://sungwookkang.com
AWS, Redshift, Serverless, SYS_QUERY_HISTORY, SlowQuery, 슬로우 쿼리 확인
'AWS' 카테고리의 다른 글
[AWS] AWS Redshift Serverless 사용량을 확인하여 빌링비용 예상하기 (0) | 2023.01.12 |
---|---|
[AWS Aurora] Aurora PostgreSQL Auto Vacuum 이해하기 (0) | 2022.10.27 |
[AWS Aurora] Aurora Parallel Query 활성화 방법 및 특징 (0) | 2022.07.25 |
[AWS Aurora] Aurora Global Database를 사용한 Cross-Region 장애조치 (0) | 2022.07.24 |
[AWS Aurora] Aurora 스토리지 특징 요약 (0) | 2022.07.11 |