RedshiftのWLMにて、同時実行クエリ数が合計16以上でも、SQAを利用する方法

日経techブロクのこの記事を読んでいて知ったこと。

Redshiftを数百人で使うためのコツ(クラスター構成編) — HACK The Nikkei

AWS コンソールでは、SQA の有効化には同時実行数の合計が 15 以内であることが必須になっているため、CLI を用いて WLM 設定を更新することで、同時実行数 25 と SQA 有効化を共存させています

な、なんだってー。

RedshiftのWork Load Managementですが、同時実行クエリ数が15より超えてしまうと、Short Query Accelaraationを利用できなくなる、と思ってました。15を超えていても、CLIからは有効化できたとは。。。さっそく試してみます。

parameter-group というパラメータグループに、以下の設計でWLMのコンフィグを流してみます。SQAの閾値は20秒です。

No 同時実行クエリ数 ユーザーグループ ワイルドカード クエリグループ ワイルドカード モニタリングルール タイムアウト メモリ利用率
1 5 yukari, maki 25
2 5 akane, aoi 25
3 5 zunchan, kiritan 25
4 5 zunchan, kiritan 25
5 15 (default queue) 25

実行サンプル文はこちら。Linux環境で実行しています。

aws redshift modify-cluster-parameter-group \
--parameter-group-name parameter-group \
--parameters '{"ApplyType":"dynamic","ParameterName":"wlm_json_configuration","ParameterValue":"[{\"user_group\":[\"yukari\",\"maki\"],\"user_group_wild_card\":0,\"query_group\":[],\"query_group_wild_card\":0,\"max_execution_time\":0,\"query_concurrency\":5,\"memory_percent_to_use\":25},{\"user_group\":[\"akane\",\"aoi\"],\"user_group_wild_card\":0,\"query_group\":[],\"query_group_wild_card\":0,\"max_execution_time\":0,\"query_concurrency\":5,\"memory_percent_to_use\":25},{\"user_group\":[\"zunchan\",\"kiritan\"],\"user_group_wild_card\":0,\"query_group\":[],\"query_group_wild_card\":0,\"max_execution_time\":0,\"query_concurrency\":5,\"memory_percent_to_use\":25},{\"user_group\":[],\"user_group_wild_card\":0,\"query_group\":[],\"query_group_wild_card\":0,\"max_execution_time\":0,\"query_concurrency\":15,\"memory_percent_to_use\":25},{\"short_query_queue\":\"true\", \"max_execution_time\":20000}]"}'

公式にて、詳細な記載条件が書かれています。JSON構造全体を '[ ] で囲め、パラメータ値は " で囲め等の、めっちゃめんどくさい条件が書かれています。

ワークロード管理の設定 - Amazon Redshift

上のサンプル文も、なかなか凶悪ですが、モニタリングルールを何も設定していないので、かなり優しい文になっているのです。