자동 WLM 구현 - Amazon Redshift

자동 WLM 구현

자동 워크로드 관리(WLM)를 통해 Amazon Redshift는 쿼리 동시성과 메모리 할당을 관리합니다. 서비스 클래스 식별자 100~107로 최대 8개의 대기열을 생성할 수 없습니다. 대기열마다 우선 순위가 있습니다. 자세한 내용은 쿼리 우선 순위 섹션을 참조하세요.

자동 WLM을 통해 쿼리에 필요한 리소스의 양을 결정하고 워크로드에 근거하여 동시성을 조정합니다. 대량의 리소스가 필요한 쿼리가 시스템에 있는 경우(예: 큰 테이블 간 해시 조인) 동시성이 낮습니다. 더 가벼운 쿼리(예: 삽입, 삭제, 스캔 또는 간단한 집계 등)가 제출되는 경우 동시성이 높습니다.

자동 WLM은 단기 쿼리 가속화(SQA)와 분리되어 있으며 쿼리를 다른 방식으로 평가합니다. 자동 WLM 및 SQA는 함께 작동하여 장기 실행 중인 리소스 집약 쿼리가 활성화되어 있는 동안에도 단기 실행 및 경량 쿼리가 완료되게 합니다. SQA에 대한 자세한 내용은 단기 쿼리 가속화 섹션을 참조하세요.

Amazon Redshift에서는 파라미터 그룹을 통해 자동 WLM을 사용합니다.

  • 클러스터에서 기본 파라미터 그룹을 사용하는 경우에서 Amazon Redshift는 클러스터에 대해 자동 WLM을 사용 설정합니다.

  • 클러스터에서 사용자 지정 파라미터 그룹을 사용하는 경우 자동 WLM을 활성화하도록 클러스터를 구성할 수 있습니다. 자동 WLM 구성에 대해 별도의 파라미터 그룹을 생성하는 것이 좋습니다.

WLM을 구성하려면 1개 이상의 클러스터와 연결할 수 있는 파라미터 그룹에서 wlm_json_configuration 파라미터를 편집합니다. 자세한 내용은 WLM 구성 수정 섹션을 참조하세요.

WLM 구성 내에서 쿼리 대기열을 정의합니다. 쿼리 대기열은 기본 WLM 구성에 추가할 수 있으며, 이때 사용자 대기열의 최대 수는 8개입니다. 각 쿼리 대기열마다 다음과 같은 속성을 구성할 수 있습니다.

  • 우선순위

  • 동시성 확장 모드

  • 사용자 그룹

  • 쿼리 그룹

  • 쿼리 모니터링 규칙

우선순위

우선 순위 값을 설정하여 워크로드 내에서 쿼리의 상대적 중요도를 정의할 수 있습니다. 우선 순위는 대기열에 대해 지정되고 이 대기열에 연결된 모든 쿼리에서 이 우선 순위를 상속합니다. 자세한 내용은 쿼리 우선 순위 섹션을 참조하세요.

동시성 확장 모드

동시성 크기 조정이 사용되면 동시 읽기 및 쓰기 쿼리의 증가를 처리하는 데 필요한 추가 클러스터 용량을 Amazon Redshift에서 자동으로 추가합니다. 쿼리가 기본 클러스터에서 실행되든 동시성 조정 클러스터에서 실행되든 사용자에게는 최신 데이터가 보입니다.

WLM 대기열을 구성하여 동시성 확장 클러스터에 보낸 쿼리를 관리합니다. 대기열에 동시성 크기 조정을 사용하면 대기열에서 기다리는 대신 적격 쿼리가 동시성 크기 조정 확장 클러스터로 전송됩니다. 자세한 내용은 동시성 확장 섹션을 참조하세요.

사용자 그룹

사용자 그룹은 사용자 그룹 이름을 지정하거나 와일드카드를 사용하여 대기열에 할당할 수 있습니다. 나열된 사용자 그룹의 멤버가 쿼리를 실행할 경우에는 해당 대기열에서 실행됩니다. 대기열에 할당할 수 있는 사용자 그룹의 수는 제한이 없습니다. 자세한 내용은 사용자 그룹을 기반으로 대기열에 쿼리 할당 섹션을 참조하세요.

사용자 역할

사용자 역할은 사용자 역할 이름을 지정하거나 와일드카드를 사용하여 대기열에 할당할 수 있습니다. 나열된 사용자 역할의 멤버가 쿼리를 실행할 경우에는 해당 대기열에서 실행됩니다. 대기열에 할당할 수 있는 사용자 역할의 수는 제한이 없습니다. 자세한 내용은 사용자 역할을 기반으로 대기열에 쿼리 할당 섹션을 참조하세요.

쿼리 그룹

쿼리 그룹은 쿼리 그룹 이름을 지정하거나 와일드카드를 사용하여 대기열에 할당할 수 있습니다. 쿼리 그룹이란 간단히 말해 레이블입니다. 실행 시간에 쿼리 그룹 레이블을 일련의 쿼리에 지정할 수 있습니다. 목록에 있는 쿼리 그룹에 지정된 모든 쿼리는 해당 대기열에서 실행됩니다. 대기열에 할당할 수 있는 쿼리 그룹의 수는 제한이 없습니다. 자세한 내용은 쿼리 그룹에 쿼리 할당 섹션을 참조하세요.

와일드카드

WLM 대기열 구성에서 와일드카드가 사용 설정되어 있으면 사용자 그룹이나 쿼리 그룹을 개별적으로, 혹은 Unix 셸 스타일 와일드카드를 사용하여 할당할 수 있습니다. 패턴 일치는 대/소문자를 구분하지 않습니다.

예를 들어 '*' 와일드카드 문자는 모든 복수 문자와 일치합니다. 따라서 대기열의 사용자 그룹 목록에 dba_*를 추가하면 이름이 dba_로 시작되는 그룹에 속한 사용자 실행 쿼리는 모두 해당 대기열에 할당됩니다. dba_admin 또는 DBA_primary를 예로 들 수 있습니다. ‘?’ 와일드카드 문자는 모든 단일 문자와 일치합니다. 따라서 대기열에 dba?1이라는 이름의 사용자 그룹이 할당되어 있으면 dba11이나 dba21 같은 사용자 그룹은 모두 일치하지만 dba12는 일치하지 않습니다.

기본적으로 와일드카드는 활성화되어 있지 않습니다.

쿼리 모니터링 규칙

쿼리 모니터링 규칙은 WLM 대기열의 지표 기반 성능 경계를 정의하고 쿼리가 해당 경계를 벗어날 때 실행할 작업을 지정합니다. 예를 들어 단시간 실행되는 쿼리 전용 대기열일 때는 60초 이상 실행되는 쿼리를 취소하는 규칙을 생성할 수도 있습니다. 그 밖에 잘못 설계된 쿼리를 추적할 목적으로 중첩 루프가 포함된 쿼리를 기록하는 규칙을 따로 만들 수도 있습니다. 자세한 내용은 WLM 쿼리 모니터링 규칙 섹션을 참조하세요.

자동 WLM 확인

자동 WLM이 활성화되었는지 확인하려면 다음 쿼리를 실행합니다. 쿼리에서 최소 1개의 행을 반환하면 자동 WLM이 활성화되어 있는 것입니다.

select * from stv_wlm_service_class_config where service_class >= 100;

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

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;

자동 WLM에서 실행했고 성공적으로 완료한 쿼리를 찾으려면 다음 쿼리를 실행합니다.

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 >= 100 and a.final_state = 'Completed' order by b.query desc limit 5;