メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

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

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

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

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

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

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

    Copy
    select * from wlm_queue_state_vw;

    以下に、結果の例を示します。

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

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

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

    Copy
    select * from wlm_query_state_vw;

    以下に、結果の例を示します。

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

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

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

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

    Copy
    select * from wlm_query_state_vw;

    以下に、結果の例を示します。

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

  3. 次に示すように他のビューからすべてを選択すると、次と似たような結果が表示されます。

    Copy
    select * from wlm_queue_state_vw;

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

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

    Copy
    select * from wlm_queue_state_vw; select * from wlm_query_state_vw;

    以下に、結果の例を示します。

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

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

ステップ 1: パラメータグループを作成する」で、クエリキューの 1 つに admin という名前のユーザーグループを設定しました。このキューでクエリを実行する前に、データベースにそのユーザーグループを作成して、ユーザーをそのユーザーグループに追加する必要があります。その後、新しいユーザーの認証情報を使って psql にログインして、クエリを実行します。データベースユーザーを作成するには、masteruser のようなスーパーユーザーとしてクエリを実行する必要があります。

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

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

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

    Copy
    create group admin; alter group admin add user adminwlm;

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

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

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

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

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

    Copy
    select * from wlm_query_state_vw; select * from wlm_queue_state_vw;

    以下に、結果の例を示します。

    このクエリが実行されたキューはキュー 2 (admin ユーザーキュー) であることに注意してください。このユーザーとしてログインしてクエリを実行すると、別のクエリグループを指定しない限り、クエリは常にキュー 2 で実行されます。

  3. 今度は、psql ウィンドウ 2.から次のクエリを実行します。

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

    Copy
    select * from wlm_queue_state_vw; select * from wlm_query_state_vw;

    以下に、結果の例を示します。

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

    Copy
    reset query_group;