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構造全体を '
と [ ]
で囲め、パラメータ値は "
で囲め等の、めっちゃめんどくさい条件が書かれています。
上のサンプル文も、なかなか凶悪ですが、モニタリングルールを何も設定していないので、かなり優しい文になっているのです。