Aurora MySQL での並列クエリのオン/オフの切り替え - Amazon Aurora

Aurora MySQL での並列クエリのオン/オフの切り替え

並列クエリが有効になっている場合、Aurora MySQL はランタイムにクエリごとにそれを使用するかを決定します。結合、ユニオン、サブクエリなどの場合、Aurora MySQL は各クエリブロックに対して実行時にパラレルクエリを使用するかどうかを決定します。詳細については、「Aurora MySQL の並列クエリを使用しているステートメントの確認」および「Aurora MySQL の並列クエリ用の SQL コンストラクト」を参照してください。

aurora_parallel_query オプションを使用して、DB インスタンスのグローバルレベルとセッションレベルの両方でパラレルクエリのオン/オフを動的に切り替えることができます。DB クラスターグループの aurora_parallel_query の設定を変更すると、デフォルトのパラレルクエリの有効と無効を切り替えることができます。

mysql> select @@aurora_parallel_query; +------------------------+ | @@aurora_parallel_query| +------------------------+ | 1 | +------------------------+

aurora_parallel_query パラメータをセッションレベルで切り替えるには、スタンダードの方法を使用してクライアントの設定を変更します。例えば、mysql コマンドラインや JDBC または ODBC アプリケーションで変更できます。このスタンダードの MySQL クライアントのコマンドは set session aurora_parallel_query = {'ON'/'OFF'} です。セッションレベルのパラメータを JDBC 構成またはアプリケーションコード内に追加して、パラレルクエリを動的にオンまたはオフにすることもできます。

aurora_parallel_query パラメータの設定は、特定の DB インスタンスまたはクラスター全体に対して永続的に変更することができます。DB パラメータグループでこのパラメータの値を指定すると、その値はクラスターの特定の DB インスタンスにのみ適用されます。DB クラスターパラメータグループでこのパラメータの値を指定すると、クラスターのすべての DB インスタンスで同じ設定が継承されます。aurora_parallel_query パラメータをクラスターレベルで切り替えるには、「Amazon Aurora のパラメータグループ」で説明されているパラメータグループの使用方法に従います。以下のステップに従ってください。

  1. カスタムクラスターパラメータグループ (推奨) またはカスタム DB パラメータグループを作成します。

  2. このパラメータグループで、parallel_query を必要な値に更新します。

  3. DB クラスターパラメータグループと DB パラメータグループのどちらを作成したかによって、パラレルクエリ機能を使用する Aurora クラスターまたは特定の DB インスタンスにパラメータグループをアタッチします。

    ヒント

    aurora_parallel_query は動的パラメータであるため、この設定を変更した後にクラスターを再起動する必要はありません。ただし、このオプションを切り替える前に並行クエリを使用していた接続は、接続が閉じられるか、インスタンスが再起動されるまで、引き続き実行されます。

パラレルクエリパラメータは、API オペレーションの ModifyDBClusterParameterGroupModifyDBParameterGroup または AWS Management Consoleを使用して変更できます。

並列クエリクラスターのハッシュ結合をオンにしたり、Amazon RDS コンソールまたは AWS CLI を使用して並列クエリのオンとオフを切り替えたり、並列クエリオプティマイザを上書きしたりすることができます。

パラレルクエリクラスターのハッシュ結合の有効化

パラレルクエリは通常、ハッシュ結合の最適化による利点がある、大量のリソースを使用する種類のクエリに使用されます。そのため、パラレルクエリを使用する予定のクラスターでハッシュ結合を有効にしておくと便利です。ハッシュ結合を効果的に使用する方法については、ハッシュ結合を使用した大規模な Aurora MySQL 結合クエリの最適化 を参照してください。

コンソールを使用したパラレルクエリのオン/オフを切り替える

パラメータグループを使用して、DB インスタンスレベルまたは DB クラスターレベルでパラレルクエリをオン/オフに切り替えることができます。

AWS Management Console で DB クラスターのパラレルクエリをオンまたはオフにする方法
  1. Amazon Aurora のパラメータグループ」の説明に従って、カスタムパラメータグループを作成します。

  2. aurora_parallel_query1 (オン) または 0 (オフ) に更新します。パラレルクエリ特徴が利用可能なクラスターでは、aurora_parallel_query はデフォルトで無効になっています。

  3. カスタムクラスターパラメータグループを使用する場合は、パラレルクエリ機能を使用する Aurora DB クラスターにアタッチします。カスタム DB パラメータグループを使用する場合は、クラスターの 1 つ以上の DB インスタンスにアタッチします。クラスターパラメータグループを使用することをお勧めします。そうすることにより、クラスターのすべての DB インスタンスでパラレルクエリとそれに関連するハッシュ結合などの機能の設定が同じになります。

CLI を使用したパラレルクエリのオン/オフ切り替え

パラレルクエリのパラメータは、modify-db-cluster-parameter-group または modify-db-parameter-group コマンドを使用して変更することができます。DB クラスターパラメータグループまたは DB パラメータグループのどちらを使用して aurora_parallel_query の値を指定するかに応じて、適切なコマンドを選択してください。

CLI で DB クラスターのパラレルクエリを有効または無効にする方法
  • パラレルクエリパラメータは、modify-db-cluster-parameter-group コマンドを使用して変更します。以下のようなコマンドを使用します。カスタムパラメータグループの名前は、使用する適切なものに置き換えてください。ON オプションの OFF の部分の ParameterValue または --parameters も置き換えてください。

    $ aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name cluster_param_group_name \ --parameters ParameterName=aurora_parallel_query,ParameterValue=ON,ApplyMethod=pending-reboot { "DBClusterParameterGroupName": "cluster_param_group_name" } aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name cluster_param_group_name \ --parameters ParameterName=aurora_pq,ParameterValue=ON,ApplyMethod=pending-reboot

またセッションレベルでパラレルクエリを有効または無効にすることも可能で、例えば mysql コマンドライン経由や JDBC や ODBC アプリケーション内などで実行できます。これを行うには、スタンダードメソッドを使用してクライアントの構成設定を変更します。例えば、Aurora MySQL では、スタンダード MySQL クライアントに対するコマンドは set session aurora_parallel_query = {'ON'/'OFF'} です。

セッションレベルのパラメータを JDBC 構成またはアプリケーションコード内に追加して、パラレルクエリを動的にオンまたはオフにすることもできます。

パラレルクエリオプティマイザの上書き

aurora_pq_force セッション変数を使用して、パラレルクエリオプティマイザを上書きし、クエリごとにパラレルクエリを行うことができます。これはテスト目的でのみ行うことをお勧めします。次の例では、セッションで aurora_pq_force を使用する方法を示します。

set SESSION aurora_parallel_query = ON; set SESSION aurora_pq_force = ON;

上書きを無効にするには、以下の手順を実行します。

set SESSION aurora_pq_force = OFF;