

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# WLM 쿼리 대기열 건너뛰기
<a name="wlm-queue-hopping"></a>

Amazon Redshift를 사용하면 WLM(워크로드 관리) 쿼리 대기열 호핑을 사용하여 워크로드 동시성과 리소스 할당을 관리할 수 있습니다. 이 기능을 사용하면 리소스 사용이 가능할 때 쿼리가 할당된 대기열에서 우선순위가 더 높은 대기열로 일시적으로 '호핑'할 수 있으므로 전반적인 쿼리 성능과 시스템 사용률이 향상됩니다. 다음 섹션에서는 Amazon Redshift에서 WLM 쿼리 대기열 호핑 구성 및 활용에 관한 자세한 가이드를 제공합니다.

[WLM 시간 제한](cm-c-defining-query-queues.md#wlm-timeout) 또는 [쿼리 모니터링 규칙(QMR) 건너뛰기 작업](cm-c-wlm-query-monitoring-rules.md#cm-c-wlm-defining-query-monitoring-rules)으로 인해 쿼리를 건너뛸 수 있습니다. 수동 WLM 구성에서는 쿼리를 건너뛸 수만 있습니다.

쿼리를 건너뛰면 WLM은 [WLM 대기열 할당 규칙](cm-c-wlm-queue-assignment-rules.md)을 기반으로 다음에 일치하는 대기열에 쿼리를 라우팅하려고 합니다. 쿼리가 다른 어떤 대기열 정의와도 일치하지 않는 경우, 쿼리가 취소됩니다. 쿼리는 기본 대기열에 할당되지 않습니다.

## WLM 제한 시간 작업
<a name="wlm-queue-hopping-summary"></a>

다음 표에는 다양한 유형의 쿼리 동작과 WLM 제한 시간이 요약되어 있습니다.


| 쿼리 유형 | 작업 | 
| --- | --- | 
| INSERT, UPDATE 및 DELETE | 취소 | 
| 사용자 정의 함수(UDF) | 취소 | 
| UNLOAD | 취소 | 
| COPY | 실행 계속 | 
| 유지 관리 작업 | 실행 계속 | 
| returning 상태의 읽기 전용 쿼리 | 실행 계속 | 
| running 상태의 읽기 전용 쿼리 | 다시 할당 또는 다시 시작 | 
| CREATE TABLE AS (CTAS), SELECT INTO | 다시 할당 또는 다시 시작 | 

## WLM 제한 시간 대기열 건너뛰기
<a name="wlm-timeout-queue-hopping"></a>

WLM은 시간이 초과될 때 다음 유형의 쿼리를 건너뜁니다.
+ WLM 상태가 `running`인 읽기 전용 쿼리(예: SELECT 문). 쿼리의 WLM 상태를 알고 싶다면 [STV\_WLM\_QUERY\_STATE](r_STV_WLM_QUERY_STATE.md) 시스템 테이블에서 STATE 열을 확인하세요.
+ CREATE TABLE AS(CTAS) 문. WLM 대기열 건너뛰기는 사용자 정의 CTAS 문과 시스템 생성 CTAS 문을 모두 지원합니다.
+ SELECT INTO 문

WLM 제한 시간이 적용되지 않는 쿼리는 완료될 때까지 원래 대기열에서 계속 실행됩니다. 다음 유형의 쿼리에는 WLM 제한 시간이 적용되지 않습니다.
+ COPY 문
+ 유지 관리 작업(예: ALTER, ANALYZE 및 VACUUM)
+ `returning` WLM 상태에 도달한 읽기 전용 쿼리(예: SELECT 문). 쿼리의 WLM 상태를 알고 싶다면 [STV\_WLM\_QUERY\_STATE](r_STV_WLM_QUERY_STATE.md) 시스템 테이블에서 STATE 열을 확인하세요.

WLM 시간 제한에 따른 건너뛰기를 사용할 수 없는 쿼리는 시간이 초과될 때 취소됩니다. 다음 유형의 쿼리는 WLM 제한 시간에 따른 건너뛰기를 사용할 수 없습니다.
+ INSERT, UPDATE 및 DELETE 문
+ UNLOAD 문
+ 사용자 정의 함수(UDF)

## WLM 제한 시간 다시 할당 및 다시 시작 쿼리
<a name="wlm-timeout-reassigned-and-restarted-queries"></a>

쿼리를 건너뛰고 일치하는 대기열을 찾을 수 없으면 쿼리가 취소됩니다.

쿼리를 건너뛰고 일치하는 대기열을 찾으면 WLM은 쿼리를 새 대기열에 다시 할당하려고 합니다. 쿼리를 다시 할당할 수 없으면 다음 설명과 같이 쿼리가 새 대기열에서 다시 시작됩니다.

다음이 모두 참인 경우에만 쿼리가 다시 할당됩니다.
+ 일치하는 대기열이 발견되었습니다.
+ 새로운 대기열에 쿼리를 실행할 수 있는 빈 슬롯이 있습니다. [wlm\_query\_slot\_count](r_wlm_query_slot_count.md) 파라미터를 1보다 큰 값으로 설정한 경우 한 쿼리에 여러 슬롯이 필요할 수 있습니다.
+ 새 대기열에서 최소한 쿼리가 현재 사용하는 것과 같은 양의 메모리를 사용할 수 있습니다.

쿼리를 다시 할당하면 쿼리는 새 대기열에서 실행을 계속합니다. 중간 결과가 보존되므로, 총 실행 시간에 대한 효과는 최소화됩니다.

쿼리를 다시 할당할 수 없으면 쿼리가 취소되고 새 대기열에서 다시 시작됩니다. 중가나 결과는 삭제됩니다. 쿼리는 대기열에서 대기한 다음 충분한 슬롯을 사용할 수 있을 때 실행을 시작합니다.

## QMR 건너뛰기 작업
<a name="qmr-hop-action-queue-hopping"></a>

다음 표에는 다양한 유형의 쿼리 동작과 QMR 건너뛰기 작업이 요약되어 있습니다.


| 쿼리 유형 | 작업 | 
| --- | --- | 
| COPY | 실행 계속 | 
| 유지 관리 작업 | 실행 계속 | 
| 사용자 정의 함수(UDF) | 실행 계속 | 
| UNLOAD | 다시 할당 또는 실행 계속 | 
| INSERT, UPDATE 및 DELETE | 다시 할당 또는 실행 계속 | 
| returning 상태의 읽기 전용 쿼리 | 다시 할당 또는 실행 계속 | 
| running 상태의 읽기 전용 쿼리 | 다시 할당 또는 다시 시작 | 
| CREATE TABLE AS (CTAS), SELECT INTO | 다시 할당 또는 다시 시작 | 

QMR에서 건너뛴 쿼리가 다시 할당되었는지, 다시 시작되었는지 또는 취소되었는지 알아보려면 [STL\_WLM\_RULE\_ACTION](r_STL_WLM_RULE_ACTION.md) 시스템 로그 테이블을 쿼리합니다.

## QMR 건너뛰기 작업 다시 할당 및 다시 시작 쿼리
<a name="qmr-hop-action-reassigned-and-restarted-queries"></a>

쿼리를 건너뛰고 일치하는 대기열을 찾을 수 없으면 쿼리가 취소됩니다.

쿼리를 건너뛰고 일치하는 대기열을 찾으면 WLM은 쿼리를 새 대기열에 다시 할당하려고 합니다. 쿼리를 다시 할당할 수 없으면 다음 설명과 같이 쿼리가 새 대기열에서 다시 시작되거나 원래 대기열에서 실행을 계속합니다.

다음이 모두 참인 경우에만 쿼리가 다시 할당됩니다.
+ 일치하는 대기열이 발견되었습니다.
+ 새로운 대기열에 쿼리를 실행할 수 있는 빈 슬롯이 있습니다. [wlm\_query\_slot\_count](r_wlm_query_slot_count.md) 파라미터를 1보다 큰 값으로 설정한 경우 한 쿼리에 여러 슬롯이 필요할 수 있습니다.
+ 새 대기열에서 최소한 쿼리가 현재 사용하는 것과 같은 양의 메모리를 사용할 수 있습니다.

쿼리를 다시 할당하면 쿼리는 새 대기열에서 실행을 계속합니다. 중간 결과가 보존되므로, 총 실행 시간에 대한 효과는 최소화됩니다.

쿼리를 다시 할당할 수 없으면 쿼리가 다시 시작되거나 원래 대기열에서 실행을 계속합니다. 쿼리를 다시 시작하면 쿼리가 취소되고 새 대기열에서 다시 시작됩니다. 중가나 결과는 삭제됩니다. 쿼리는 대기열에서 대기한 다음 충분한 슬롯을 사용할 수 있을 때 실행을 시작합니다.