動的な WLM の例 - Amazon Redshift

Amazon Redshift は、2025 年 11 月 1 日以降、新しい Python UDF の作成をサポートしなくなります。Python UDF を使用する場合は、その日付より前に UDF を作成してください。既存の Python UDF は引き続き通常どおり機能します。詳細については、ブログ記事を参照してください。

動的な WLM の例

Amazon Redshift では、動的な WLM (ワークロード管理) を使用して、Amazon Redshift クラスター全体のワークロード分散とリソース割り当てを自動的に管理できます。動的な WLM は、ワークロードの需要に基づいてメモリ割り当てを動的に調整するワークロード管理 (WLM) 設定の例であり、最適な同時実行とパフォーマンスを可能にします。次のセクションでは、Amazon Redshift クラスターの動的な WLM の実装と設定について詳しく説明します。

次の動的プロパティを使用して、キューが 2 つ存在するクラスター WLM が設定されているとします。

キュー Concurrency % Memory to Use

1

4

50%

2

4

50%

ここでは、クラスターがクエリ処理に 200 GB のメモリを使用できるとします (この値は任意の数値であり、あくまでも例です)。次の式に示すように、各スロットには 25 GB 割り当てられます。

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

次に、次の動的プロパティを使用するように WLM を変更します。

キュー Concurrency % Memory to Use

1

3

75%

2

4

25%

次の式に示すように、キュー 1 内の各スロットの新しいメモリ割り当ては 50 GB です。

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

新しい設定の適用時にクエリ A1、A2、A3、A4 が実行中であり、クエリ B1、B2、B3、B4 がキューに入っているとします。WLM は、クエリスロットを次のように動的に再設定します。

ステップ 実行中のクエリ 現在のスロットカウント 目標スロットカウント 割り当て済みメモリ 利用可能なメモリ
1 A1、A2、A3、A4 4 0 100 GB 50 GB
2 A2、A3、A4 3 0 75 GB 75 GB
3 A3、A4 2 0 50 GB 100 GB
4 A3、A4、B1 2 1 100 GB 50 GB
5 A4、B1 1 1 75 GB 75 GB
6 A4、B1、B2 1 2 125 GB 25 GB
7 B1、B2 0 2 100 GB 50 GB
8 B1、B2、B3 0 3 150 GB 0 GB
  1. WLM は、各クエリスロットへのメモリ割り当てを再計算します。最初は、キュー 1 には 100 GB 割り当てられていました。新しいキューの合計割り当ては 150 GB のため、新しいキューはすぐに 50 GB 使用可能になります。キュー 1 が 4 つのスロットを使用するようになり、新しい同時実行レベルは 3 つのスロットになったため、新しいスロットは追加されません。

  2. 1 つのクエリが終了したら、スロットは削除され、25 GB が解放されます。キュー 1 のスロットは 3 つ、使用可能なメモリは 75 GB になりました。新しい設定では新しいスロットごとに 50 GB 必要ですが、新しい同時実行レベルは 3 つのスロットのため、新しいスロットは追加されません。

  3. 2 つ目のクエリが終了したら、スロットは削除され、25 GB が解放されます。キュー 1 のスロットは 2 つになり、空きメモリは 100 GB になります。

  4. 空きメモリ 50 GB を使用して新しいスロットが追加されます。キュー 1 のスロットは 3 つになり、空きメモリは 50 GB になります。キューに入っているクエリを新しいスロットにルーティングできるようになりました。

  5. 3 つ目のクエリが完了すると、スロットは削除され、25 GB が解放されます。キュー 1 のスロットは 2 つになり、空きメモリは 75 GB になります。

  6. 空きメモリ 50 GB を使用して新しいスロットが追加されます。キュー 1 のスロットは 3 つになり、空きメモリは 25 GB になります。キューに入っているクエリを新しいスロットにルーティングできるようになりました。

  7. 4 つ目のクエリが終了したら、スロットは削除され、25 GB が解放されます。キュー 1 のスロットは 2 つになり、空きメモリは 50 GB になります。

  8. 空きメモリ 50 GB を使用して新しいスロットが追加されます。キュー 1 のスロットは、それぞれ 50 GB のスロットが 3 つになり、使用可能なすべてのメモリが割り当てられました。

移行が完了し、キューに入ったクエリがすべてのクエリスロットを使用できるようになります。