キューへのクエリの割り当て - Amazon Redshift

キューへのクエリの割り当て

次の例では、ユーザーロール、ユーザーグループ、クエリグループに従ってクエリをキューに割り当てます。

ユーザーロールに基づくクエリのキューへの割り当て

ユーザーがロールに割り当てられ、そのロールがキューにアタッチされている場合、そのユーザーによって実行されたクエリはそのキューに割り当てられます。次の例では、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 USERCREATE 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

ここで、group_label は、WLM 設定にリストされているクエリグループのラベルです。

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';