本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用成本型最佳化工具
您可以使用 Athena SQL 中的成本型最佳化工具 (CBO) 功能,來最佳化您的查詢。您可以選擇請求 Athena 為 AWS Glue的其中一個資料表收集資料表,或資料欄層級的統計資訊。如果查詢中的所有資料表都有統計資訊,Athena 會使用這些統計資訊建立其判斷為效能最佳的執行計畫。查詢最佳化工具會依據統計模型計算備選計畫,然後選取執行查詢最快的計劃。
AWS Glue 資料表的統計資料會收集並儲存在 中, AWS Glue Data Catalog 並提供給 Athena 以改善查詢規劃和執行。這些統計資訊是有關檔案類型 (例如 Parquet、ORC、JSON、ION、CSV 和 XML) 的資料欄層級的統計資訊,例如不同值的數目、空值數目、最大值和最小值。Amazon Athena 會使用這些統計資訊,儘早在查詢處理中套用限制最嚴格的篩選條件,以最佳化查詢。這項篩選會限制記憶體用量,以及為傳送查詢結果必須讀取的記錄數目。
當與 CBO 結合時,Athena 會使用稱為規則型最佳化工具 (RBO) 的功能。RBO 以機械方式套用預期可以改善查詢效能的規則。RBO 通常是有益的,因為它的轉換旨在簡化查詢計畫。但是,由於 RBO 不執行成本計算或計畫比較,因此更複雜的查詢會使 RBO 難以建立最佳計劃。
因此,Athena 同時使用 RBO 和 CBO 來最佳化您的查詢。Athena 在識別到改善查詢執行的機會之後,就會建立最佳計畫。如需有關執行計畫的詳細資訊,請參閱 檢視 SQL 查詢的執行計劃。如需 CBO 運作方式的詳細討論,請參閱 大數據部落格中的 AWS 使用 Amazon Athena 中的成本型最佳化工具加速查詢
若要產生 AWS Glue 目錄資料表的統計資料,您可以使用 Athena 主控台 AWS Glue 、主控台或 AWS Glue APIs。由於 Athena 已與 AWS Glue Catalog 整合,因此當您從 Amazon Athena 執行查詢時,會自動取得對應的查詢效能改進。
考量與限制
-
資料表類型 – 目前,Athena 中的 CBO 功能僅支援 中的 Hive 和 Iceberg 資料表 AWS Glue Data Catalog。
-
Athena for Spark – CBO 功能在 Athena for Spark 中不可用。
-
定價 – 如需定價資訊,請造訪 AWS Glue 定價頁面
。
使用 Athena 主控台產生資料表統計資料
本節說明如何使用 Athena 主控台在 AWS Glue中產生資料表或資料表資料欄層級的統計資訊。如需使用 AWS Glue 產生資料表統計資料的資訊,請參閱《 AWS Glue 開發人員指南》中的使用資料欄統計資料。
若要使用 Athena 主控台產生資料表統計資訊
前往 https://console.aws.amazon.com/athena/
開啟 Athena 主控台。 -
在 Athena 查詢編輯器的資料表清單中,為您想要的資料表選擇三個垂直點,然後選擇產生統計資訊。
-
在產生統計資訊對話方塊中,選擇所有資料欄以產生資料表中所有資料欄的統計資訊,或選擇選取的資料欄來選取特定的資料欄。預設值是所有資料欄。
-
針對AWS Glue 服務角色,建立或選取現有的服務角色,以授予 產生統計資料 AWS Glue 的許可。 AWS Glue 服務角色還需要對包含資料表資料的 Amazon S3 儲存貯體的
S3:GetObject
許可。 -
選擇產生統計資料。正在產生
table_name
的統計資訊通知橫幅會顯示任務狀態。 -
若要在 AWS Glue 主控台中檢視詳細資訊,請選擇在 Glue 中檢視。
如需有關在 AWS Glue 主控台中檢視統計資料的資訊,請參閱《 開發人員指南》中的檢視欄統計資料。 AWS Glue
-
產生統計資訊之後,具有統計資訊的資料表和資料欄會在括弧中顯示統計資訊一詞,如下圖所示。
現在,當您執行查詢時,Athena 會針對產生統計資訊的資料表和資料欄,執行成本型最佳化。
啟用和停用資料表統計資料
當您依照上一節的步驟產生 Iceberg 資料表的資料表統計資料時,名為 的 Glue 資料表屬性use_iceberg_statistics
會自動新增至 中的 Iceberg 資料表, AWS Glue Data Catalog 並預設為 true。如果您移除此屬性或將其設定為 false,CBO 不會在嘗試在查詢執行期間最佳化查詢計劃時使用 Iceberg 資料表統計資料,即使統計資料是由 Glue 產生也一樣。如需如何產生資料表統計資料的詳細資訊,請參閱 使用 Athena 主控台產生資料表統計資料。
相反地,Glue Data Catalog 中的 Hive 資料表沒有類似的資料表屬性來啟用或停用 CBO 的資料表統計資料。因此,CBO 在嘗試最佳化 Hive 資料表的查詢計劃時,一律會使用 Glue 產生的資料表統計資料。
其他資源
如需詳細資訊,請參閱下列資源。