

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Aurora MySQL 中最佳化平行查詢
<a name="aurora-mysql-parallel-query-optimizing"></a>

若要最佳化資料庫叢集以進行平行查詢，請考慮哪些資料庫叢集將受益於平行查詢，以及是否要針對平行查詢進行升級。然後，調校工作負載並建立平行查詢的結構描述物件。

**Contents**
+ [規劃平行查詢叢集](#aurora-mysql-parallel-query-planning)
  + [檢查平行查詢的 Aurora MySQL 版本相容性](#aurora-mysql-parallel-query-checking-compatibility)
+ [平行查詢的升級考量](#aurora-mysql-parallel-query-upgrade)
  + [將平行查詢叢集升級至 Aurora MySQL 第 3 版](#aurora-mysql-parallel-query-upgrade-pqv2)
  + [升級至 Aurora MySQL 2.09 及更新版本](#aurora-mysql-parallel-query-upgrade-2.09)
+ [平行查詢的效能調校](#aurora-mysql-parallel-query-performance)
+ [建立結構描述物件以充分利用平行查詢](#aurora-mysql-parallel-query-tables)

## 規劃平行查詢叢集
<a name="aurora-mysql-parallel-query-planning"></a>

規劃已開啟平行查詢的資料庫叢集需要做出一些選擇。其中包括執行安裝步驟 (建立或還原完整 Aurora MySQL 叢集)，以及決定在資料庫叢集間開啟平行查詢的廣泛程度。

請在規劃中考慮下列項目：
+ 如果您使用與 MySQL 5.7 相容的 Aurora MySQL，則必須建立佈建叢集。然後，您可以使用 `aurora_parallel_query` 參數開啟平行查詢。

  如果您有現有 Aurora MySQL 叢集，則不需要建立新叢集即可使用平行查詢。您可以將叢集或叢集中的特定資料庫執行個體，與已開啟 `aurora_parallel_query` 參數的參數群組建立關聯。如此一來，您可以減少設定相關資料來搭配平行查詢使用的時間和精力。
+ 規劃您需要重新組織的任何大型資料表，以便存取它們時可以使用平行查詢。您可能需要建立一些能發揮平行查詢效用的新版大型資料表。例如，您可能需要移除全文搜尋索引。如需詳細資訊，請參閱[建立結構描述物件以充分利用平行查詢](#aurora-mysql-parallel-query-tables)。

### 檢查平行查詢的 Aurora MySQL 版本相容性
<a name="aurora-mysql-parallel-query-checking-compatibility"></a>

若要檢查哪些 Aurora MySQL 版本與平行查詢叢集相容，請使用 `describe-db-engine-versions` AWS CLI 命令並檢查 `SupportsParallelQuery` 欄位的值。下列程式碼範例示範如何檢查指定 AWS 區域中的平行查詢叢集可使用哪些組合。請務必在單行上指定完整的 `--query` 參數字串。

```
aws rds describe-db-engine-versions --region us-east-1 --engine aurora-mysql \
--query '*[]|[?SupportsParallelQuery == `true`].[EngineVersion]' --output text
```

上述命令會產生類似下列的輸出：輸出可能會根據指定 AWS 區域中可用的 Aurora MySQL 版本而有所不同。

```
5.7.mysql_aurora.2.11.1
5.7.mysql_aurora.2.11.2
5.7.mysql_aurora.2.11.3
5.7.mysql_aurora.2.11.4
5.7.mysql_aurora.2.11.5
5.7.mysql_aurora.2.11.6
5.7.mysql_aurora.2.12.0
5.7.mysql_aurora.2.12.1
5.7.mysql_aurora.2.12.2
5.7.mysql_aurora.2.12.3
5.7.mysql_aurora.2.12.4
8.0.mysql_aurora.3.04.0
8.0.mysql_aurora.3.04.1
8.0.mysql_aurora.3.04.2
8.0.mysql_aurora.3.04.3
8.0.mysql_aurora.3.05.2
8.0.mysql_aurora.3.06.0
8.0.mysql_aurora.3.06.1
8.0.mysql_aurora.3.07.0
8.0.mysql_aurora.3.07.1
```

 開始使用平行查詢與叢集之後，您可以監視效能，並移除平行查詢使用的障礙。如需相關說明，請參閱 [平行查詢的效能調校](#aurora-mysql-parallel-query-performance)。

## 平行查詢的升級考量
<a name="aurora-mysql-parallel-query-upgrade"></a>

 視您升級平行查詢叢集時的原始版本和目的地版本而定，您可能會在平行查詢可以最佳化的查詢類型中找到增強功能。您可能也會發現不需要為平行查詢指定特殊的引擎模式參數。下列各節說明當您升級已開啟平行查詢的叢集時的考量。

### 將平行查詢叢集升級至 Aurora MySQL 第 3 版
<a name="aurora-mysql-parallel-query-upgrade-pqv2"></a>

 從 Aurora MySQL 第 3 版開始，數個 SQL 陳述式、子句和資料類型都有新的或改善的平行查詢支援。從第 3 版之前的版本升級時，請檢查其他查詢是否可以受益於平行查詢最佳化。如需這些平行查詢增強功能的相關資訊，請參閱[資料欄資料類型](aurora-mysql-parallel-query-sql.md#aurora-mysql-parallel-query-sql-datatypes)、[分割的資料表](aurora-mysql-parallel-query-sql.md#aurora-mysql-parallel-query-sql-partitioning)和[彙整函數、GROUP BY 子句和 HAVING 子句](aurora-mysql-parallel-query-sql.md#aurora-mysql-parallel-query-sql-aggregation)。

如果您是從 Aurora MySQL 2.08 或更舊版本升級平行查詢叢集，也應了解如何開啟平行查詢中的變更。若要這樣做，請閱讀[升級至 Aurora MySQL 2.09 及更新版本](#aurora-mysql-parallel-query-upgrade-2.09)。

在 Aurora MySQL 第 3 版中，預設為開啟雜湊聯結最佳化。不會使用來自舊版的 `aurora_disable_hash_join` 組態選項。

### 升級至 Aurora MySQL 2.09 及更新版本
<a name="aurora-mysql-parallel-query-upgrade-2.09"></a>

在 Aurora MySQL 2.09 及更新版本中，平行查詢適用於佈建的叢集，並且不需要 `parallelquery` 引擎模式參數。因此，您不需要建立新的叢集或從現有的快照還原，即可使用這些版本的平行查詢。您可以使用 [升級 Aurora MySQL 資料庫叢集的次要版本或修補程式層級](AuroraMySQL.Updates.Patching.md) 中所述的升級程序，將叢集升級為此類版本。您可以升級較舊的叢集，無論它是平行查詢叢集還是佈建的叢集。若要減少 **Engine version (引擎版本)** 選單中的選項數目，您可以選擇 **Show versions that support the parallel query feature (顯示支援平行查詢功能)**的版本來篩選該選單中的項目。然後選擇 Aurora MySQL 2.09 或更新版本。

將較早的平行查詢叢集升級為 Aurora MySQL 2.09 或更新版本之後，您可以在升級的叢集中開啟平行查詢。在這些版本中，平行查詢預設為關閉，它的啟用程序也不同。雜湊聯結最佳化預設也會關閉，而且必須個別開啟。因此，請確定您在升級之後再次開啟這些設定。如需執行這項操作的指示說明，請參閱 [在 Aurora MySQL 中開啟和關閉平行查詢。](aurora-mysql-parallel-query-enabling.md) 和 [開啟平行查詢叢集的雜湊聯結](aurora-mysql-parallel-query-enabling.md#aurora-mysql-parallel-query-enabling-hash-join)。

特別的是，您可以使用組態參數，而不是 `aurora_parallel_query=ON` 和 `aurora_disable_hash_join=OFF` 的 `aurora_pq_supported` 和 `aurora_pq` 來開啟平行查詢。在較新的 Aurora MySQL 版本中已取代 `aurora_pq_supported` 和 `aurora_pq` 參數。

 在升級的叢集中，`EngineMode` 屬性具有 `provisioned` 值，而不是 `parallelquery`。若要檢查指定的引擎版本是否可使用平行查詢，現在請檢查`describe-db-engine-versions` AWS CLI 命令輸出中的 `SupportsParallelQuery` 欄位值。在較早的 Aurora MySQL 版本中，您已檢查 `parallelquery` 清單中是否存在 `SupportedEngineModes`。

升級至 Aurora MySQL 2.09 或更新版本之後，您可以利用下列功能。這些功能不適用於執行 Aurora MySQL 舊版的平行查詢叢集。
+ 績效詳情。如需更多詳細資訊，請參閱 [在 Amazon Aurora 上使用績效詳情監控資料庫負載](USER_PerfInsights.md)。
+ 恢復功能 如需更多詳細資訊，請參閱 [恢復 Aurora 資料庫叢集](AuroraMySQL.Managing.Backtrack.md)。
+ 停止和啟動叢集。如需更多詳細資訊，請參閱 [停用和啟動 Amazon Aurora 資料庫叢集](aurora-cluster-stop-start.md)。

## 平行查詢的效能調校
<a name="aurora-mysql-parallel-query-performance"></a>

 若要使用平行查詢管理工作負載的效能，請確定平行查詢用於此最佳化最有助益的查詢。

 若要這樣做，您可以執行下列操作：
+  確保您的最大資料表與平行查詢相容。您可能會變更資料表屬性或重新建立某些資料表，讓這些資料表的查詢可以利用平行查詢最佳化。若要瞭解如何操作，請參閱[建立結構描述物件以充分利用平行查詢](#aurora-mysql-parallel-query-tables)。
+  監控哪些查詢使用平行查詢。若要瞭解如何操作，請參閱[監控 Aurora MySQL 的平行查詢](aurora-mysql-parallel-query-monitoring.md)。
+  確認平行查詢是用於資料密集型和長時間執行的查詢，以及適合您工作負載的並行層級。若要瞭解如何操作，請參閱[確認哪些陳述式使用平行查詢](aurora-mysql-parallel-query-verifying.md)。
+  微調您的 SQL 程式碼以開啟平行查詢，並套用至您預期的查詢。若要瞭解如何操作，請參閱[Aurora MySQL 中平行查詢的 SQL 建構](aurora-mysql-parallel-query-sql.md)。

## 建立結構描述物件以充分利用平行查詢
<a name="aurora-mysql-parallel-query-tables"></a>

 建立或修改計劃用於平行查詢的表格之前，請務必熟悉 [先決條件](aurora-mysql-parallel-query.md#aurora-mysql-parallel-query-prereqs) 和 [限制](aurora-mysql-parallel-query.md#aurora-mysql-parallel-query-limitations) 中所述的需求。

 因為平行查詢需要資料表才能使用 `ROW_FORMAT=Compact` 或 `ROW_FORMAT=Dynamic` 設定，所以請檢查您的 Aurora 組態設定，以找出 `INNODB_FILE_FORMAT` 組態選項的任何變更。發出 `SHOW TABLE STATUS` 陳述式，以確認資料庫中所有資料表的資料列格式。

 在變更結構描述以開啟平行查詢以使用更多資料表之前，請務必進行測試。您的測試應該確認平行查詢是否會導致這些資料表的效能出現淨增加。此外，請確定平行查詢的結構描述需求符合您的目標。

 例如，從 `ROW_FORMAT=Compressed` 切換至 `ROW_FORMAT=Compact` 或 `ROW_FORMAT=Dynamic` 之前，針對原始和新的資料表測試工作負載的效能。此外，考量其他潛在效果，例如資料量增加。