

 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="cm-c-wlm-dynamic-properties"></a>

WLM 구성 속성은 동적이거나 정적입니다. 동적 속성은 클러스터 재부팅 없이도 데이터베이스에 적용할 수 있지만 정적 속성의 경우 변경 사항이 적용되려면 클러스터를 재부팅해야 합니다. 하지만 동적 속성과 정적 속성을 동시에 변경할 경우 속성 변경 사항을 모두 적용하려면 클러스터를 재부팅해야 합니다. 이는 변경된 속성이 동적이든 정적이든 상관없습니다.

동적 속성을 적용하는 동안 클러스터 상태는 `modifying`입니다. 자동 WLM과 수동 WLM 간의 전환은 정적 변경이기 때문에 적용하려면 클러스터를 재부팅해야 합니다.

다음 표에서는 자동 WLM 또는 수동 WLM 사용 시 어떤 WLM 속성이 동적이고 정적인지 알려줍니다.


****  

| WLM 속성 | 자동 WLM | 수동 WLM | 
| --- | --- | --- | 
| 쿼리 그룹 | 동적 | 정적 | 
| 쿼리 그룹 와일드카드 | 동적 | 정적 | 
| 사용자 그룹 | 동적 | 정적 | 
| 사용자 그룹 와일드카드 | 동적 | 정적 | 
| 사용자 역할 | 동적 | 정적 | 
| 사용자 역할 와일드카드 | 동적 | 정적 | 
| 기본 클러스터의 동시성 | 해당 사항 없음 | 동적 | 
| 동시성 확장 모드 | 동적 | 동적 | 
| 단기 쿼리 가속화 활성화 | 해당 사항 없음 | 동적 | 
| 단기 쿼리의 최대 실행 시간 | 동적 | 동적 | 
| 사용할 메모리 비율 | 해당 사항 없음 | 동적 | 
| 제한 시간 | 해당 사항 없음 | 동적 | 
| 우선순위 | 동적 | 해당 사항 없음 | 
| 대기열 추가 또는 제거 | 동적  | 정적 | 

쿼리 모니터링 규칙(QMR)을 추가하거나 기존 QMR을 수정 또는 삭제하면 클러스터를 다시 시작할 필요 없이 자동으로 변경됩니다.

**참고**  
수동 WLM 사용 시 제한 시간 값이 변경되면 값이 변경된 후 실행이 시작되는 모든 쿼리에 새로운 값이 적용됩니다. 동시성 또는 사용할 메모리 비율이 변경되면 Amazon Redshift가 동적으로 새 구성으로 변경됩니다. 단, 현재 실행 중인 쿼리는 변경의 영향을 받지 않습니다. 자세한 내용은 [WLM 동적 메모리 할당](https://docs.aws.amazon.com/redshift/latest/dg/cm-c-wlm-dynamic-memory-allocation.html) 섹션을 참조하세요.

**Topics**
+ [WLM 동적 메모리 할당](cm-c-wlm-dynamic-memory-allocation.md)
+ [동적 WLM 예제](cm-c-wlm-dynamic-example.md)

# WLM 동적 메모리 할당
<a name="cm-c-wlm-dynamic-memory-allocation"></a>

WLM은 각 대기열마다 동시성 레벨에 맞춰 다수의 쿼리 슬롯을 생성합니다. 쿼리 슬롯에 할당되는 메모리 크기는 슬롯 수를 기준으로 분할된 대기열에 할당되는 메모리 비율과 동일합니다. 메모리 할당 또는 동시성을 변경하면 Amazon Redshift가 새로운 WLM 구성으로의 전환을 동적으로 관리합니다. 따라서 활성 쿼리가 현재 할당된 메모리 양을 사용하여 완료될 때까지 실행될 수 있습니다. 동시에 Amazon Redshift는 총 메모리 사용량이 사용 가능한 메모리의 100%를 초과하지 않도록 합니다.

워크로드 관리자는 다음과 같은 프로세스에 따라 구성 전환을 관리합니다.

1. WLM이 새로운 쿼리 슬롯마다 메모리 할당을 재계산합니다.

1. 실행 중인 쿼리에서 사용하지 않는 쿼리 슬롯이 있으면 WLM이 슬롯을 제거하여 새로운 슬롯에서 해당 메모리를 사용할 수 있게 합니다.

1. 쿼리 슬롯이 현재 사용 중일 경우에는 쿼리가 끝날 때까지 WLM이 대기합니다.

1. 현재 실행 중인 쿼리가 종료되면 빈 슬롯은 제거되고 할당된 메모리도 해제됩니다.

1. 슬롯을 하나 이상 추가할 정도로 메모리가 충분하다면 새로운 슬롯이 추가됩니다.

1. 변경 시점에 실행 중이던 쿼리가 모두 종료되면 슬롯 수가 새로운 동시성 레벨과 동일해지면서 새로운 WLM 구성 전환이 완료됩니다.

실제로 변경 시 실행 중인 쿼리는 계속해서 원래 메모리 할당을 사용합니다. 변경 시 대기열에서 대기 중인 쿼리는 실행할 때가 되면 새로운 슬롯으로 라우팅됩니다.

전환 프로세스 도중 WLM 동적 속성이 변경되면 WLM이 현재 상태부터 즉시 새로운 구성 전환을 시작합니다. 전환 상태를 보려면 [STV\$1WLM\$1SERVICE\$1CLASS\$1CONFIG](r_STV_WLM_SERVICE_CLASS_CONFIG.md) 시스템 테이블에 대한 쿼리를 실행하세요.

# 동적 WLM 예제
<a name="cm-c-wlm-dynamic-example"></a>

Amazon Redshift를 사용하면 동적 WLM(워크로드 관리)을 사용하여 Amazon Redshift 클러스터 전반에서 워크로드 배포 및 리소스 할당을 자동으로 관리할 수 있습니다. 동적 WLM은 워크로드 요구 사항에 따라 메모리 할당을 동적으로 조정하여 최적의 동시성과 성능을 제공하는 워크로드 관리(WLM) 구성의 예제입니다. 다음 섹션에서는 Amazon Redshift 클러스터에서 동적 WLM을 구현하고 구성하는 방법에 대한 세부 정보를 제공합니다.

클러스터 WLM이 다음과 같은 동적 속성을 사용하여 2개의 대기열로 구성되어 있다고 가정하겠습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/cm-c-wlm-dynamic-example.html)

이번에는 클러스터에 쿼리 처리에 사용할 수 있는 메모리가 200GB 있다고 가정하겠습니다. 이 수치는 임의적인 것으로 이해를 돕기 위해 사용되었습니다. 다음 방정식과 같이 각 슬롯에 할당되는 메모리는 25GB입니다.

```
(200 GB * 50% ) / 4 slots  = 25 GB
```

이번에는 다음과 같은 동적 속성을 사용하도록 WLM을 변경합니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/cm-c-wlm-dynamic-example.html)

다음 방정식과 같이 대기열 1에서는 각 슬롯마다 새롭게 할당되는 메모리는 50GB입니다.

```
(200 GB * 75% ) / 3 slots = 50 GB 
```

새로운 구성을 적용할 때 쿼리 A1, A2, A3 및 A4가 실행 중이고, 쿼리 B1, B2, B3 및 B4가 대기 중이라고 가정하겠습니다. WLM이 쿼리 슬롯을 다음과 같이 동적으로 재구성합니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/cm-c-wlm-dynamic-example.html)

1. WLM이 쿼리 슬롯마다 메모리 할당을 재계산합니다. 처음에 대기열 1에 할당된 메모리는 100GB였습니다. 하지만 새로운 대기열에 할당되는 총 메모리는 150GB이기 때문에 50GB를 즉시 사용할 수 있습니다. 현재 대기열 1에서 사용하는 슬롯 수는 4개이고, 새로운 동시성 레벨은 3슬롯이므로 새로운 슬롯이 추가되지는 않습니다.

1. 하나의 쿼리가 종료되면 슬롯이 제거되고 25GB가 비워집니다. 대기열 1은 이제 슬롯이 3개이며, 75GB의 메모리를 사용할 수 있습니다. 새로운 구성에서는 각 슬롯마다 50GB가 필요하지만 동시성 레벨이 3슬롯이기 때문에 슬롯이 새롭게 추가되지는 않습니다.

1. 두 번째 쿼리가 종료되면 슬롯이 제거되고 25GB가 비워집니다. 대기열 1은 이제 슬롯이 2개이며, 100GB가 사용할 수 있는 여유 메모리입니다.

1. 여유 메모리 50GB를 사용하여 새로운 슬롯이 추가됩니다. 대기열 1은 이제 슬롯이 3개이며, 50GB가 사용할 수 있는 여유 메모리입니다. 이제 대기열에서 대기 중이던 쿼리가 새로운 슬롯으로 라우팅될 수 있습니다.

1. 세 번째 쿼리가 종료되면 슬롯이 제거되고 25GB가 비워집니다. 대기열 1은 이제 슬롯이 2개이며, 75GB가 사용할 수 있는 여유 메모리입니다.

1. 여유 메모리 50GB를 사용하여 새로운 슬롯이 추가됩니다. 대기열 1은 이제 슬롯이 3개이며, 25GB가 사용할 수 있는 여유 메모리입니다. 이제 대기열에서 대기 중이던 쿼리가 새로운 슬롯으로 라우팅될 수 있습니다.

1. 네 번째 쿼리가 종료되면 슬롯이 제거되고 25GB가 비워집니다. 대기열 1은 이제 슬롯이 2개이며, 50GB가 사용할 수 있는 여유 메모리입니다.

1. 여유 메모리 50GB를 사용하여 새로운 슬롯이 추가됩니다. 대기열 1은 이제 슬롯이 3개이며 각각 50GB씩 사용할 수 있는 메모리가 모두 할당되었습니다.

전환이 완료되어 대기 중이던 쿼리가 모든 쿼리 슬롯을 사용할 수 있습니다.