以前の記事で、Redshift Serverlessを使った時、なかなか思うようにスケールしてくれないと書きました
先日re:Invent2023で"Redshift Serverless with AI-driven scaling and optimizations (Preview)"が発表されました。
そこで、早速使ってみて前回からスケールの挙動が変わったのか確認しました。
Amazon Redshift Serverless with AI-driven scaling and optimizations について
Monday Night Liveでの発表の箇所はこちら
https://www.youtube.com/watch?v=pJG6nmR7XxI&t=3053s
・クエリの複雑さやデータ量からワークロードパターンを学習する
・1日を通してリソースを継続的に調整し、実際のワークロードのニーズに基づいて容量を自動的かつプロアクティブに調整する
・AIによって強化された最適化と予測を導入する
うまくやってくれるようではありますが、実際にどのように動くのでしょうか、早速確認します。
"AI-driven scaling"を有効にしたRedshift Serverlessを作成する
通常のRedshift Serverlessのコンソール画面からCreate Workgroupすると以下のようにCapacityとしてBase Capacityを設定する画面になります
Redshift Serverlessのコンソールから上部の「Create Preview Workgroup」選択すると
以下のように、BaseCapacityではなく、「Price-performance targets」を選択する画面になります。
選択できる値は、1-100まで25刻みの5通り、デフォルトで50 balancedが選択されています
またこのPreview WorkgroupではオプションとしてRPUの最大値が設定できるようになっています
ネットワークや名前空間の設定は従来とかわらないようです。
Price-performance targets : 50
Limits : なし
のデフォルトで作成します。
ベンチマークの準備
以前と同様AWSのブログで紹介されているTPC-DSベースのRedshift用のDWHベンチマークをセットアップします。
https://github.com/awslabs/amazon-redshift-utils/tree/master/src/CloudDataWarehouseBenchmark/Cloud-DWB-Derived-from-TPCDS
手順は割愛しますが、1TBのケースを使います。
ベンチマークの実行
まず10並列で試行します。
Price-performance targets : 50
Limits : なし
30分ほど実行したところ、前回とは異なり、コンソールのPerformance Metricsで最大RPU143までスケールするのが確認できました。
前回スケールしなかった5並列も試行します。
今度は最大RPU307までスケールして20分かからず完走してしまいました!
上のQueryRuntimeにおいて、RPUがスケールしたところで各SQLの実行時間がグッと短くなっているのがみて取れます。
感想・考察
今回の試行では10並列より5並列の方が大きくスケールする結果となりましたがこれが「AI」の学習結果でしょうか。便利ではありますが、ブラックボックス部分にどのくらい期待を置いてよいのか、という懸念も感じました。
「AI」の学習結果であれば、試行回数・時間で異なる結果が出る可能性はあると思いますが、少なくともAI-DrivenではないServerlessよりは積極的にスケールしようとしているように見えており、私的には望ましい挙動になってきていると感じています。
またもろもろ条件を変えて継続調査しますが、"Preview"がとれるのが待ち遠しいです!