단기 쿼리 가속화 작업 - Amazon Redshift

단기 쿼리 가속화 작업

단기 쿼리 가속화(SQA)는 선택한 단기 실행 쿼리를 장기 실행 쿼리보다 우선적으로 적용합니다. SQA 쿼리가 대기열에서 장기 쿼리 뒤에서 대기해야 하지 않도록 SQA는 전용 공간에서 단기 실행 쿼리를 실행합니다. SQA는 단기 실행되고 사용자 정의 대기열에 있는 쿼리에만 우선순위를 부여합니다. SQA가 있으면 단기 실행 쿼리가 더 빠르게 실행하기 시작하며 사용자가 더 빨리 결과를 확인합니다.

SQA를 활성화하면 단기 쿼리 실행에 전용되는 워크로드 관리(WLM) 대기열을 축소할 수 있습니다. 또한 장기 실행 쿼리가 단기 실행 쿼리와 대기열의 슬롯에 대해 경합할 필요가 없으므로, 더 적은 쿼리 슬롯을 사용하도록 WLM 대기열을 구성할 수 있습니다. 더 적은 동시성을 사용하면 대부분의 워크로드에 대해 쿼리 처리량이 증가되고 전체 시스템 성능이 향상됩니다.

CREATE TABLE AS(CTAS) 문과 읽기 전용 쿼리(예: SELECT 문)는 SQA를 사용할 수 있습니다.

Amazon Redshift는 기계 학습 알고리즘으로 사용 가능한 각 쿼리를 분석하고 쿼리의 실행 시간을 예측합니다. 기본적으로 WLM은 클러스터의 워크로드를 분석한 정보에 근거하여 SQA 최대 실행 시간에 대한 값을 동적으로 지정합니다. 또는 1~20초의 고정값을 지정할 수 있습니다. 쿼리의 예측 실행 시간이 정의되거나 동적으로 할당된 SQA의 최대 런타임보다 짧고 쿼리가 WLM 대기열에서 대기 중인 경우 SQA는 WLM 대기열에서 쿼리를 분리하고 우선 실행되도록 예약합니다. 쿼리가 SQA 최대 실행 시간보다 오래 실행되면 WLM 대기열 할당 규칙에 따라 WLM은 쿼리를 첫 번째로 일치하는 WLM 대기열로 이동합니다. 시간이 지나면서 SQA가 쿼리 패턴에서 학습하면 예측이 향상합니다.

SQA는 기본 파라미터 그룹과 모든 새 파라미터 그룹에 대해 기본적으로 활성화되어 있습니다. Amazon Redshift 콘솔에서 SQA를 사용 중지하려면 파라미터 그룹에 맞게 WLM 구성을 편집하고 [단기 쿼리 가속화 사용(Enable short query acceleration)]을 선택 해제합니다. 모범 사례로, 최적의 전체 시스템 성능을 유지하려면 15개 이하의 WLM 쿼리 슬롯 수를 사용하는 것이 좋습니다. WLM 구성 수정에 대한 자세한 내용은 Amazon Redshift 관리 가이드워크로드 관리 구성 섹션을 참조하세요.

단기 쿼리의 최대 실행 시간

SQA를 활성화하면 WLM이 단기 쿼리에 대한 최대 실행 시간을 ‘동적(dynamic)’으로 기본 설정합니다. SQA 최대 실행 시간에 대해서는 동적 설정을 유지하는 것이 좋습니다. 1~20초의 고정값을 지정하여 기본 설정을 재정의할 수 있습니다.

경우에 따라 시스템 성능을 개선하기 위해 SQA 최대 실행 시간에 다양한 값을 사용하는 방안을 고려할 수 있습니다. 이 경우 워크로드를 분석하여 대부분의 단기 실행 쿼리에 대한 최대 실행 시간을 확인하십시오. 다음 쿼리는 약 70 백분위수에서 쿼리의 최대 실행 시간을 반환합니다.

select least(greatest(percentile_cont(0.7) within group (order by total_exec_time / 1000000) + 2, 2), 20) from stl_wlm_query where userid >= 100 and final_state = 'Completed';

워크로드에 효과적으로 작동하는 최대 실행 시간 값을 식별한 후에는 워크로드가 크게 변경되지 않는 한 값을 변경할 필요가 없습니다.

SQA 모니터링

SQA가 활성화되었는지 확인하려면 다음 쿼리를 실행합니다. 쿼리가 행을 반환하면 SQA가 활성화된 것입니다.

select * from stv_wlm_service_class_config where service_class = 14;

다음 쿼리는 각 쿼리 대기열(서비스 클래스)를 통해 전송된 쿼리의 수를 보여줍니다. 또한 평균 실행 시간, 90번째 퍼센타일에 대기 시간이 있는 쿼리 수, 평균 대기 시간도 보여줍니다. SQA 쿼리는 서비스 중 클래스 14를 사용합니다.

select final_state, service_class, count(*), avg(total_exec_time), percentile_cont(0.9) within group (order by total_queue_time), avg(total_queue_time) from stl_wlm_query where userid >= 100 group by 1,2 order by 2,1;

SQA에서 선택되고 성공적으로 완료된 쿼리를 찾으려면 다음 쿼리를 실행합니다.

select a.queue_start_time, a.total_exec_time, label, trim(querytxt) from stl_wlm_query a, stl_query b where a.query = b.query and a.service_class = 14 and a.final_state = 'Completed' order by b.query desc limit 5;

SQA에서 가져왔지만 시간이 초과된 쿼리를 확인하려면 다음 쿼리를 실행합니다.

select a.queue_start_time, a.total_exec_time, label, trim(querytxt) from stl_wlm_query a, stl_query b where a.query = b.query and a.service_class = 14 and a.final_state = 'Evicted' order by b.query desc limit 5;

제거된 쿼리 및 일반적으로 쿼리에 대해 수행할 수 있는 규칙 기반 작업에 대한 자세한 내용은 WLM 쿼리 모니터링 규칙 섹션을 참조하세요.