本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
您可以使用 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 功能只支援 AWS Glue Data Catalog中的 Hive 資料表。
-
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 會針對產生統計資訊的資料表和資料欄,執行成本型最佳化。
其他資源
如需詳細資訊,請參閱下列資源。