

# Aurora MySQL での並列クエリのオン/オフの切り替え
<a name="aurora-mysql-parallel-query-enabling"></a>

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

**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 のパラメータグループ](USER_WorkingWithParamGroups.md)」で説明されているパラメータグループの使用方法に従います。以下のステップに従ってください。

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

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

1.  DB クラスターパラメータグループと DB パラメータグループのどちらを作成したかによって、パラレルクエリ機能を使用する Aurora クラスターまたは特定の DB インスタンスにパラメータグループをアタッチします。
**ヒント**  
`aurora_parallel_query` は動的パラメータであるため、この設定を変更した後にクラスターを再起動する必要はありません。ただし、このオプションを切り替える前に並行クエリを使用していた接続は、接続が閉じられるか、インスタンスが再起動されるまで、引き続き実行されます。

 パラレルクエリパラメータは、API オペレーションの [ModifyDBClusterParameterGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBClusterParameterGroup.html) や [ModifyDBParameterGroup](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBParameterGroup.html) または AWS マネジメントコンソールを使用して変更できます。

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

**Contents**
+ [パラレルクエリクラスターのハッシュ結合の有効化](#aurora-mysql-parallel-query-enabling-hash-join)
+ [コンソールを使用したパラレルクエリのオン/オフを切り替える](#aurora-mysql-parallel-query-enabling-console)
+ [CLI を使用したパラレルクエリのオン/オフ切り替え](#aurora-mysql-parallel-query-enabling-cli)
+ [パラレルクエリオプティマイザの上書き](#aurora-mysql-parallel-query-enabling.aurora_pq_force)

## パラレルクエリクラスターのハッシュ結合の有効化
<a name="aurora-mysql-parallel-query-enabling-hash-join"></a>

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

## コンソールを使用したパラレルクエリのオン/オフを切り替える
<a name="aurora-mysql-parallel-query-enabling-console"></a>

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

**AWS マネジメントコンソール で DB クラスターのパラレルクエリをオンまたはオフにする方法**

1.  「[Amazon Aurora のパラメータグループ](USER_WorkingWithParamGroups.md)」の説明に従って、カスタムパラメータグループを作成します。

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

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

## CLI を使用したパラレルクエリのオン/オフ切り替え
<a name="aurora-mysql-parallel-query-enabling-cli"></a>

 パラレルクエリのパラメータは、`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 構成またはアプリケーションコード内に追加して、パラレルクエリを動的にオンまたはオフにすることもできます。

## パラレルクエリオプティマイザの上書き
<a name="aurora-mysql-parallel-query-enabling.aurora_pq_force"></a>

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

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

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

```
set SESSION aurora_pq_force = OFF;
```