Amazon RedshiftにおけるWorkload Management(WLM)とは?
クエリの処理を管理し、リソースを効果的に使用してクエリのパフォーマンスを最適化するための機能です。WLMは、クエリがどれだけのリソースを使用できるか、クエリのプライオリティを設定し、クエリの実行を制御するための仕組みを提供します。
こんな問題があるときにWLWを使う
AWS説明文から抜粋
例えば、あるユーザーグループが、複数の大規模なテーブルの行を選択して並べ替える、
実行時間の長い複雑なクエリをときどき送信するとします。
別のグループは、1 つまたは 2 つのテーブルから数行のみを選択し、
数秒実行される短いクエリを頻繁に送信します。
この状況では、実行時間が短いクエリは、
実行時間が長いクエリが完了するまで
キューで待機しなければならない場合があります。
WLM は、このソリューションの管理に役立ちます。
Amazon Redshift WLM は、自動WLM
または手動WLMで実行するように設定できます。
これにより、重いクエリ処理をしている中でも、優先度の高い軽いクエリ処理がスムーズに走る設計になります。
キュー(Queue):
WLMでは、キューがクエリを実行するための実行環境を提供します。各キューは一定のスロット数を持ち、これにより同時実行できるクエリの数が制限されます。
スロット(Slot):
スロットはRedshiftクラスタ内のノードの一部を表し、クエリが利用できるリソース量を示します。各キューには一定数のスロットが割り当てられ、それに基づいてクエリの実行が行われます。
キューのプライオリティ:
クエリは異なるキューにプライオリティを設定できます。高いプライオリティを持つクエリは、低いプライオリティを持つクエリよりも優先的に実行されます。これにより、重要なクエリに優先的にリソースが割り当てられます。
コンカレンシーの管理:
WLMはクエリの同時実行を制御します。各キューが同時に実行できるクエリの数を調整することで、クラスタ全体のリソースを効果的に活用します。
動的なリソース割り当て:
キューごとにスロット数を動的に調整することが可能です。これにより、クエリの種類や優先度に応じてリソースを適切に割り当てることができます。
※補足 同時実行スケーリングモードについて
Amazon Redshiftの「同時実行スケーリングモード(Concurrency Scaling Mode)」は、Redshiftクラスタが同時に実行できるクエリの数を効果的に拡張するための機能です。通常のRedshiftクエリ実行では、一つのクエリが複数のスロットを使用し、そのスロットがコンピュートノードに分散して処理されます。同時実行スケーリングモードは、この処理をより効率的に行うために導入されました。
自動同時実行スケーリングモード(Auto Concurrency Scaling Mode):
自動同時実行スケーリングモードでは、Redshiftが同時実行クエリの数に応じて自動的にスロット数を増減させます。これにより、同時実行できるクエリ数が増加し、クエリの待ち時間を減少させることが期待されます。スケールアップやスケールダウンは自動的に行われます。
手動同時実行スケーリングモード(Manual Concurrency Scaling Mode):
手動同時実行スケーリングモードでは、ユーザーが手動で同時実行クエリのスロット数を設定できます。ユーザーが制御を持って同時実行のスケーリングを行います。手動でスロット数を調整することで、特定の要件に対して柔軟に対応できます。