最佳化 Aurora My 中的平行查詢SQL - Amazon Aurora

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

最佳化 Aurora My 中的平行查詢SQL

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

規劃平行查詢叢集

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

請在規劃中考慮下列項目:

  • 如果您使用與 MySQL 5.7 相容的 Aurora MySQL,則必須建立佈建叢集。然後,您可以使用 aurora_parallel_query 參數開啟平行查詢。

    如果您有現有的 Aurora MySQL 叢集,則不需要建立新叢集即可使用平行查詢。您可以將叢集或叢集中的特定資料庫執行個體,與已開啟 aurora_parallel_query 參數的參數群組建立關聯。如此一來,您可以減少設定相關資料來搭配平行查詢使用的時間和精力。

  • 規劃您需要重新組織的任何大型資料表,以便存取它們時可以使用平行查詢。您可能需要建立一些能發揮平行查詢效用的新版大型資料表。例如,您可能需要移除全文搜尋索引。如需詳細資訊,請參閱 建立結構描述物件以充分利用平行查詢

檢查 Aurora MySQL 版本與平行查詢的相容性

若要檢查哪些 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 第 3 版

從 Aurora MySQL 第 3 版開始,數個SQL陳述式、子句和資料類型具有新的或改善的平行查詢支援。從第 3 版之前的版本升級時,請檢查其他查詢是否可以受益於平行查詢最佳化。如需這些平行查詢增強功能的相關資訊,請參閱資料欄資料類型分割的資料表彙總函數、GROUP BY 子句和HAVING子句

如果您要從 Aurora MySQL 2.08 或更低版本升級平行查詢叢集,也請了解如何開啟平行查詢的變更。若要這樣做,請閱讀升級到 Aurora MySQL 2.09 及更高版本

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

升級到 Aurora MySQL 2.09 及更高版本

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

將較早的平行查詢叢集升級到 Aurora MySQL 2.09 或更高版本後,您可以在升級的叢集中開啟平行查詢。在這些版本中,平行查詢預設為關閉,它的啟用程序也不同。雜湊聯結最佳化預設也會關閉,而且必須個別開啟。因此,請確定您在升級之後再次開啟這些設定。如需執行這項操作的指示說明,請參閱 在我的 Aurora 中打開和關閉 parallel 查詢 SQL開啟平行查詢叢集的雜湊聯結

特別的是,您可以使用組態參數,而不是 aurora_parallel_query=ONaurora_disable_hash_join=OFFaurora_pq_supportedaurora_pq 來開啟平行查詢。在較新的 Aurora MySQL 版本中, aurora_pq_supportedaurora_pq 參數已棄用。

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

升級到 Aurora MySQL 2.09 版或更新版本後,您可以利用下列功能。這些功能不適用於執行舊版 Aurora MySQL 的平行查詢叢集。

平行查詢的效能調校

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

若要這樣做,您可以執行下列操作:

建立結構描述物件以充分利用平行查詢

建立或修改計劃用於平行查詢的表格之前,請務必熟悉 必要條件限制 中所述的需求。

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

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

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