キューへのクエリの割り当て
Amazon Redshift では、ワークロードの同時実行を管理し、クエリをキューに割り当てることでクエリに優先順位を付けることができます。キューを使用すると、重要度の低いクエリより重要なクエリが優先されるように、さまざまなタイプのクエリやユーザーにメモリや CPU などのリソースを割り当てることができます。以下のセクションでは、定義した基準に基づいてキューを作成し、プロパティを設定して、受信クエリを割り当てる方法について説明します。
次の例では、ユーザーロール、ユーザーグループ、クエリグループに従ってクエリをキューに割り当てます。
ユーザーロールに基づくクエリのキューへの割り当て
ユーザーがロールに割り当てられ、そのロールがキューにアタッチされている場合、そのユーザーによって実行されたクエリはそのキューに割り当てられます。次の例では、sales_rw
という名前のユーザーロールを作成し、そのロールにユーザー test_user
を割り当てます。
create role sales_rw; grant role sales_rw to test_user;
1 つのロールを別のロールに明示的に付与することで、2 つのロールのアクセス許可を組み合わせることもできます。ネストされたロールをユーザーに割り当てると、両方のロールのアクセス許可がユーザーに付与されます。
create role sales_rw; create role sales_ro; grant role sales_ro to role sales_rw; grant role sales_rw to test_user;
クラスターでロールが付与されているユーザーのリストを表示するには、SVV_USER_GRANTS テーブルにクエリを実行します。クラスターでロールが付与されているロールのリストを表示するには、SVV_ROLE_GRANTS テーブルにクエリを実行します。
select * from svv_user_grants; select * from svv_role_grants;
ユーザーグループに基づくクエリのキューへの割り当て
ユーザーグループ名がキューの定義にリストされている場合、そのユーザーグループのメンバーによって実行されたキューは、対応するキューに割り当てられます。次の例では、ユーザーグループを作成し、SQL コマンド CREATE USER、CREATE GROUP、および ALTER GROUP を使用してユーザーをグループに割り当てます。
create group admin_group with user admin246, admin135, sec555; create user vp1234 in group ad_hoc_group password 'vpPass1234'; alter group admin_group add user analyst44, analyst45, analyst46;
クエリグループへのクエリの割り当て
適切なクエリグループにクエリを割り当てることで、実行時にクエリをキューに割り当てることができます。クエリグループを開始するには、SET コマンドを使用します。
SET query_group TO
group_label
ここで、
は、WLM 設定にリストされているクエリグループのラベルです。group_label
SET query_group
コマンドの後で実行するすべてのクエリは、クエリグループをリセットするか、現在のログインセッションを終了するまで、指定されたクエリグループのメンバーとして実行されます。Amazon Redshift オブジェクトの設定とリセットの詳細については、SQL コマンドリファレンスの「SET」および「RESET」を参照してください。
指定するクエリグループラベルは現在の WLM 設定に含まれている必要があります。それ以外の場合、SET query_group コマンドはクエリキューに対して効果がありません。
TO 句で定義されたラベルはクエリログにキャプチャされるので、このラベルをトラブルシューティングに使用できます。query_group 設定パラメータの詳細については、設定リファレンスの「query_group」を参照してください。
次の例では、クエリグループ 'priority' の一部として 2 つのクエリを実行し、クエリグループをリセットします。
set query_group to 'priority'; select count(*)from stv_blocklist; select query, elapsed, substring from svl_qlog order by query desc limit 5; reset query_group;
Superuser キューへのクエリの割り当て
superuser キューにクエリを割り当てるには、スーパーユーザーとして Amazon Redshift にログオンし、superuser グループでクエリを実行します。終了したら、クエリグループをリセットし、以降のクエリが superuser キューで実行されないようにします。
次の例では、2 つのコマンドを superuser キューで実行するように割り当てます。
set query_group to 'superuser'; analyze; vacuum; reset query_group;
スーパーユーザーのリストを表示するには、PG_USER システムカタログテーブルをクエリします。
select * from pg_user where usesuper = 'true';