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 ステートメントがサポートされます。
-
SELECT INTO ステートメント。
WLM タイムアウトの対象でないクエリは、完了するまで元のキューで実行を継続します。以下のタイプのクエリは、WLM タイムアウトの対象外です。
-
COPY ステートメント
-
ANALYZE や VACUUM などのメンテナンスオペレーション
-
WLM 状態が
returning
になった、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 以上の値に設定されている場合、クエリに複数のスロットが必要になる場合があります。
-
新しいキューのメモリ量が、クエリが現在使用しているメモリ量と少なくとも同じである。
再割り当てされたクエリは、新しいキューで実行を継続します。中間の結果は保持されるため、合計実行時間に対する影響は最小限です。
再割り当てできないクエリは、再開されるか元のキューで実行を継続します。クエリが再開される場合、そのクエリはキャンセルされ、新しいキューで再開されます。中間の結果は削除されます。クエリはキュー内で待機し、十分なスロット数が利用可能になると実行を開始します。