在我的 Aurora 中優化 parallel 查詢 SQL - Amazon Aurora

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

在我的 Aurora 中優化 parallel 查詢 SQL

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

規劃平行查詢叢集

規劃已開啟平行查詢的資料庫叢集需要做出一些選擇。其中包括執行設定步驟 (建立或還原完整的 Aurora My SQL 叢集),以及決定跨資料庫叢集開啟 parallel 查詢的範圍。

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

  • 如果您使用與「我SQL的 SQL 5.7」相容的「我的 Aurora」,您必須選擇「我的 SQL 2.09 或更高版本的 Aurora」。在此情況下,您永遠會建立已佈建的叢集。然後,您可以使用 aurora_parallel_query 參數開啟平行查詢。

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

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

檢查 Aurora 我的SQL版本兼容性的 parallel 查詢

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

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

上述命令會產生類似下列的輸出:輸出可能會因指定 AWS 區域中提供的 Aurora My SQL 版本而有所不同。

5.7.mysql_aurora.2.11.1 8.0.mysql_aurora.3.01.0 8.0.mysql_aurora.3.01.1 8.0.mysql_aurora.3.02.0 8.0.mysql_aurora.3.02.1 8.0.mysql_aurora.3.02.2 8.0.mysql_aurora.3.03.0

開始使用平行查詢與叢集之後,您可以監視效能,並移除平行查詢使用的障礙。如需相關說明,請參閱 平行查詢的效能調校

平行查詢的升級考量

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

將 parallel 查詢叢集升級至 Aurora 我的SQL版本 3

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

如果您要從 Aurora My SQL 2.08 或更低版本升級 parallel 查詢叢集,請同時瞭解如何開啟 parallel 查詢的變更。若要這樣做,請閱讀升級到 Aurora 我的 SQL 2.09 及更高版本

在 Aurora 我的SQL版本 3 中,默認情況下,哈希聯接優化處於打開狀態。不會使用來自舊版的 aurora_disable_hash_join 組態選項。

升級到 Aurora 我的 SQL 2.09 及更高版本

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

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

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

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

升級至 Aurora 我的SQL版本 2.09 或更高版本後,您可以利用下列功能。這些功能不適用於執行舊版 Aurora 我的SQL版本的 parallel 查詢叢集。

平行查詢的效能調校

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

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

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

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

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

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

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