ワークロード管理の実装
ワークロード管理 (WLM) を使用して複数のクエリキューを定義し、実行時にクエリを適切なキューに配信することができます。
複数のセッションやユーザーが同時にクエリを実行している場合があります。このような場合、一部のクエリがクラスターリソースを長時間消費して、他のクエリのパフォーマンスに影響を与えることがあります。例えば、あるユーザーグループが、複数の大規模なテーブルの行を選択して並べ替える、実行時間の長い複雑なクエリをときどき送信するとします。別のグループは、1 つまたは 2 つのテーブルから数行のみを選択し、数秒実行される短いクエリを頻繁に送信します。この状況では、実行時間が短いクエリは、実行時間が長いクエリが完了するまでキューで待機しなければならない場合があります。WLM は、このソリューションの管理に役立ちます。
Amazon Redshift WLM は、自動 WLM または手動 WLM で実行するように設定できます。
自動 WLM
システムのスループットを最大化し、リソースを効率的に使用するには、Amazon Redshift で、同時実行クエリを自動 WLM で実行するためのリソースの分割方法を管理できます。自動 WLM は、クエリの実行に必要なリソースを管理します。Amazon Redshift は、ディスパッチされたクエリごとに割り当てる同時実行クエリ数とメモリ量を決定します。自動 WLM を Amazon Redshift コンソールを使用して有効にするには、[Switch WLM mode (WLM モードの切り替え)]、[Auto WLM (自動 WLM)] の順に選択します。このオプションでは、最大 8 個のキューを使用してクエリを管理します。[メモリ] フィールドと [Concurrency on main (メインでの同時実行数)] フィールドはいずれも、[Auto (自動)] に設定されます。各キューにマップするワークロードまたはユーザーのビジネス優先度を反映する優先度を指定できます。デフォルトでは、クエリの優先度は、[Normal] に設定されます。キュー内のクエリの優先度を変更する方法については、「クエリ優先度」を参照してください。詳細については、「自動 WLM の実装」を参照してください。
実行時に、ユーザーグループまたはクエリグループに従って、これらのクエリをキューに配信できます。また、実行時間が長いクエリを制限するようにクエリモニタリングルール (QMR) を設定することもできます。
同時実行スケーリングや自動 WLM を使用すると、一貫した高速のクエリパフォーマンスで、事実上無制限の同時ユーザーと同時クエリをサポートできます。詳細については、「同時実行スケーリングを使用する」を参照してください。
注記
パラメータグループを作成し、自動 WLM を選択してクエリリソースを管理することをお勧めします。手動 WLM から自動 WLM に移行する方法の詳細については、「手動 WLM から自動 WLM に移行する」を参照してください。
-
手動 WLM
別の方法として、システムパフォーマンスとユーザーエクスペリエンスを管理するには、WLM 設定を変更して、実行時間が長いクエリと短いクエリ用に異なるキューを作成できます。実行時に、ユーザーグループまたはクエリグループに従って、これらのクエリをキューに配信できます。この手動設定を有効にするには、Amazon Redshift コンソールで [Manual WLM (手動 WLM)] に切り替えます。このオプションでは、管理する対象のキューと、[メモリ] フィールドおよび [Concurrency on main (メインでの同時実行数)] フィールドの値を指定します。手動設定では、クエリキューを最大 8 個設定できます。さらに、これらのキューごとに同時実行できるクエリの数を設定できます。クエリを実行するユーザーや指定したラベルに基づいて特定のキューにクエリをルーティングするためのルールを設定できます。各キューに割り当てるメモリの量を設定することによって、大きいクエリを他のキューよりメモリの多いキューで実行することもできます。また、実行時間が長いクエリを制限するようにクエリモニタリングルール (QMR) を設定することもできます。詳細については、「手動 WLM を実装する」を参照してください。
注記
手動 WLM クエリキューのクエリスロットは合計 15 個以下にすることをお勧めします。詳細については、「同時実行レベル」を参照してください。