セクション 3: ユーザーグループとクエリグループに基づいてクエリをキューにルーティング - Amazon Redshift

セクション 3: ユーザーグループとクエリグループに基づいてクエリをキューにルーティング

クラスターを新しいパラメータグループに関連付けて WLM を設定しました。次に、いくつかのクエリを実行して Amazon Redshift がどのようにクエリをキューにルーティングして処理するかを確認します。

ステップ 1: データベースのクエリキュー設定を表示する

まず、データベースに WLM が正常に設定されていることを確認します。

クエリキュー設定を表示するには

  1. RSQL を開き、次のクエリを実行します。クエリは「ステップ 1: WLM_QUEUE_STATE_VW ビューを作成する」で作成した WLM_QUEUE_STATE_VW ビューを使用します。クラスターを再起動する前にセッションをデータベースに接続済みである場合は、再接続する必要があります。

    select * from wlm_queue_state_vw;

    結果の例は次のとおりです。

    この結果を、「ステップ 1: WLM_QUEUE_STATE_VW ビューを作成する」で受け取った結果と比較します。キューが 2 つ追加されていることがわかります。キュー 1 は test クエリグループのキューになり、キュー 2 は admin ユーザーグループのキューになっています。

    キュー 3 はデフォルトキューになっています。リストの最後のキューは常にデフォルトキューです。これは、クエリでユーザーグループやクエリグループが指定されていない場合、デフォルトでクエリがルーティングされる先のキューです。

  2. 次のクエリを実行して、クエリがキュー 3 で実行されることを確認します。

    select * from wlm_query_state_vw;

    結果の例は次のとおりです。

ステップ 2: クエリグループキューを使ってクエリを実行する

クエリグループキューを使ってクエリを実行するには

  1. 次のクエリを実行して、クエリを test クエリグループにルーティングします。

    set query_group to test; select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid <40000;
  2. 他の RSQL ウィンドウから、次のクエリを実行します。

    select * from wlm_query_state_vw;

    結果の例は次のとおりです。

    クエリは、test クエリグループ (今はキュー 1) にルーティングされました。

  3. キューの状態表示ですべてを選択します。

    select * from wlm_queue_state_vw;

    次のような結果が表示されます。

  4. 今度は、クエリグループをリセットして、実行時間が長いクエリを再び実行します。

    reset query_group; select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid <40000;
  5. ビューに対するクエリを実行して、結果を確認します。

    select * from wlm_queue_state_vw; select * from wlm_query_state_vw;

    結果の例は次のとおりです。

    結果として、クエリが今は再びキュー 3 で実行されています。

ステップ 3: データベースユーザーとグループを作成する

このキューでクエリを実行する前に、データベースにユーザーグループを作成して、このユーザーグループにユーザーを追加する必要があります。次に、新しいユーザーの認証情報を使って RSQL にログインして、クエリを実行します。データベースユーザーを作成するには、管理ユーザーのようなスーパーユーザーとしてクエリを実行する必要があります。

新しいデータベースユーザーとユーザーグループを作成するには

  1. RSQL ウィンドウで次のコマンドを実行して、データベースに adminwlm という名前の新しいデータベースユーザーを作成します。

    create user adminwlm createuser password '123Admin';
  2. 続いて、次のコマンドを実行して、新しいユーザーグループを作成し、新しい adminwlm ユーザーをそのユーザーグループに追加します。

    create group admin; alter group admin add user adminwlm;

ステップ 4: ユーザーグループキューを使ってクエリを実行する

次に、クエリを実行し、それをユーザーグループキューにルーティングします。これを行うのは、実行するクエリのタイプを処理するように設定されたキューにクエリをルーティングする場合です。

ユーザーグループキューを使ってクエリを実行するには

  1. RSQL ウィンドウ 2 で、次のクエリを実行して、adminwlm アカウントに切り替え、そのユーザーとしてクエリを実行します。

    set session authorization 'adminwlm'; select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid <40000;
  2. RSQL ウィンドウ 1 で、次のクエリを実行して、クエリがルーティングされるクエリキューを確認します。

    select * from wlm_query_state_vw; select * from wlm_queue_state_vw;

    結果の例は次のとおりです。

    このクエリが実行されたキューはキュー 2 (admin ユーザーキュー) です。このユーザーとしてログインしてクエリを実行すると、別のクエリグループを指定しない限り、クエリは常にキュー 2 で実行されます。選択されるキューは、キューの割り当てルールによって異なります。詳細については、「WLM キュー割り当てルール」を参照してください。

  3. 次に、RSQL ウィンドウ 2.から次のクエリを実行します。

    set query_group to test; select avg(l.priceperticket*s.qtysold) from listing l, sales s where l.listid <40000;
  4. RSQL ウィンドウ 1 で、次のクエリを実行して、クエリがルーティングされるクエリキューを確認します。

    select * from wlm_queue_state_vw; select * from wlm_query_state_vw;

    結果の例は次のとおりです。

  5. 処理が完了したら、クエリグループをリセットします。

    reset query_group;