WLM 쿼리 대기열 건너뛰기
Amazon Redshift를 사용하면 WLM(워크로드 관리) 쿼리 대기열 호핑을 사용하여 워크로드 동시성과 리소스 할당을 관리할 수 있습니다. 이 기능을 사용하면 리소스 사용이 가능할 때 쿼리가 할당된 대기열에서 우선순위가 더 높은 대기열로 일시적으로 '호핑'할 수 있으므로 전반적인 쿼리 성능과 시스템 사용률이 향상됩니다. 다음 섹션에서는 Amazon Redshift에서 WLM 쿼리 대기열 호핑 구성 및 활용에 관한 자세한 가이드를 제공합니다.
WLM 시간 제한 또는 쿼리 모니터링 규칙(QMR) 건너뛰기 작업으로 인해 쿼리를 건너뛸 수 있습니다. 수동 WLM 구성에서는 쿼리를 건너뛸 수만 있습니다.
쿼리를 건너뛰면 WLM은 WLM 대기열 할당 규칙을 기반으로 다음에 일치하는 대기열에 쿼리를 라우팅하려고 합니다. 쿼리가 다른 어떤 대기열 정의와도 일치하지 않는 경우, 쿼리가 취소됩니다. 쿼리는 기본 대기열에 할당되지 않습니다.
WLM 제한 시간 작업
다음 표에는 다양한 유형의 쿼리 동작과 WLM 제한 시간이 요약되어 있습니다.
쿼리 유형 | 작업 |
---|---|
INSERT, UPDATE 및 DELETE | 취소 |
사용자 정의 함수(UDF) | 취소 |
UNLOAD | 취소 |
COPY | 실행 계속 |
유지 관리 작업 | 실행 계속 |
returning 상태의 읽기 전용 쿼리 |
실행 계속 |
running 상태의 읽기 전용 쿼리 |
다시 할당 또는 다시 시작 |
CREATE TABLE AS (CTAS), SELECT INTO | 다시 할당 또는 다시 시작 |
WLM 제한 시간 대기열 건너뛰기
WLM은 시간이 초과될 때 다음 유형의 쿼리를 건너뜁니다.
-
WLM 상태가
running
인 읽기 전용 쿼리(예: SELECT 문). 쿼리의 WLM 상태를 알고 싶다면 STV_WLM_QUERY_STATE 시스템 테이블에서 STATE 열을 확인하십시오. -
CREATE TABLE AS(CTAS) 문. WLM 대기열 건너뛰기는 사용자 정의 CTAS 문과 시스템 생성 CTAS 문을 모두 지원합니다.
-
SELECT INTO 문
WLM 제한 시간이 적용되지 않는 쿼리는 완료될 때까지 원래 대기열에서 계속 실행됩니다. 다음 유형의 쿼리에는 WLM 제한 시간이 적용되지 않습니다.
-
COPY 문
-
유지 관리 작업(예: ANALYZE 및 VACUUM)
-
returning
WLM 상태에 도달한 읽기 전용 쿼리(예: SELECT 문). 쿼리의 WLM 상태를 알고 싶다면 STV_WLM_QUERY_STATE 시스템 테이블에서 STATE 열을 확인하십시오.
WLM 시간 제한에 따른 건너뛰기를 사용할 수 없는 쿼리는 시간이 초과될 때 취소됩니다. 다음 유형의 쿼리는 WLM 제한 시간에 따른 건너뛰기를 사용할 수 없습니다.
-
INSERT, UPDATE 및 DELETE 문
-
UNLOAD 문
-
사용자 정의 함수(UDF)
WLM 제한 시간 다시 할당 및 다시 시작 쿼리
쿼리를 건너뛰고 일치하는 대기열을 찾을 수 없으면 쿼리가 취소됩니다.
쿼리를 건너뛰고 일치하는 대기열을 찾으면 WLM은 쿼리를 새 대기열에 다시 할당하려고 합니다. 쿼리를 다시 할당할 수 없으면 다음 설명과 같이 쿼리가 새 대기열에서 다시 시작됩니다.
다음이 모두 참인 경우에만 쿼리가 다시 할당됩니다.
-
일치하는 대기열이 발견되었습니다.
-
새로운 대기열에 쿼리를 실행할 수 있는 빈 슬롯이 있습니다. wlm_query_slot_count 파라미터를 1보다 큰 값으로 설정한 경우 한 쿼리에 여러 슬롯이 필요할 수 있습니다.
-
새 대기열에서 최소한 쿼리가 현재 사용하는 것과 같은 양의 메모리를 사용할 수 있습니다.
쿼리를 다시 할당하면 쿼리는 새 대기열에서 실행을 계속합니다. 중간 결과가 보존되므로, 총 실행 시간에 대한 효과는 최소화됩니다.
쿼리를 다시 할당할 수 없으면 쿼리가 취소되고 새 대기열에서 다시 시작됩니다. 중가나 결과는 삭제됩니다. 쿼리는 대기열에서 대기한 다음 충분한 슬롯을 사용할 수 있을 때 실행을 시작합니다.
QMR 건너뛰기 작업
다음 표에는 다양한 유형의 쿼리 동작과 QMR 건너뛰기 작업이 요약되어 있습니다.
쿼리 유형 | 작업 |
---|---|
COPY | 실행 계속 |
유지 관리 작업 | 실행 계속 |
사용자 정의 함수(UDF) | 실행 계속 |
UNLOAD | 다시 할당 또는 실행 계속 |
INSERT, UPDATE 및 DELETE | 다시 할당 또는 실행 계속 |
returning 상태의 읽기 전용 쿼리 |
다시 할당 또는 실행 계속 |
running 상태의 읽기 전용 쿼리 |
다시 할당 또는 다시 시작 |
CREATE TABLE AS (CTAS), SELECT INTO | 다시 할당 또는 다시 시작 |
QMR에서 건너뛴 쿼리가 다시 할당되었는지, 다시 시작되었는지 또는 취소되었는지 알아보려면 STL_WLM_RULE_ACTION 시스템 로그 테이블을 쿼리합니다.
QMR 건너뛰기 작업 다시 할당 및 다시 시작 쿼리
쿼리를 건너뛰고 일치하는 대기열을 찾을 수 없으면 쿼리가 취소됩니다.
쿼리를 건너뛰고 일치하는 대기열을 찾으면 WLM은 쿼리를 새 대기열에 다시 할당하려고 합니다. 쿼리를 다시 할당할 수 없으면 다음 설명과 같이 쿼리가 새 대기열에서 다시 시작되거나 원래 대기열에서 실행을 계속합니다.
다음이 모두 참인 경우에만 쿼리가 다시 할당됩니다.
-
일치하는 대기열이 발견되었습니다.
-
새로운 대기열에 쿼리를 실행할 수 있는 빈 슬롯이 있습니다. wlm_query_slot_count 파라미터를 1보다 큰 값으로 설정한 경우 한 쿼리에 여러 슬롯이 필요할 수 있습니다.
-
새 대기열에서 최소한 쿼리가 현재 사용하는 것과 같은 양의 메모리를 사용할 수 있습니다.
쿼리를 다시 할당하면 쿼리는 새 대기열에서 실행을 계속합니다. 중간 결과가 보존되므로, 총 실행 시간에 대한 효과는 최소화됩니다.
쿼리를 다시 할당할 수 없으면 쿼리가 다시 시작되거나 원래 대기열에서 실행을 계속합니다. 쿼리를 다시 시작하면 쿼리가 취소되고 새 대기열에서 다시 시작됩니다. 중가나 결과는 삭제됩니다. 쿼리는 대기열에서 대기한 다음 충분한 슬롯을 사용할 수 있을 때 실행을 시작합니다.