使用成本最佳化處理程式 - Amazon Athena

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

使用成本最佳化處理程式

您可以使用 Athena 中的基於成本的最佳化程式 (CBO) 功能SQL來最佳化您的查詢。您可以選擇請求 Athena 為 AWS Glue的其中一個資料表收集資料表,或資料欄層級的統計資訊。如果查詢中的所有資料表都有統計資訊,Athena 會使用這些統計資訊建立其判斷為效能最佳的執行計畫。查詢最佳化工具會依據統計模型計算備選計畫,然後選取執行查詢最快的計劃。

資料 AWS Glue 表的統計資料會收集並儲存在中, AWS Glue Data Catalog 並提供給 Athena,以改善查詢規劃和執行。這些統計資料是資料行層級的統計資料,例如 Parquet、、、、、、和等檔案類型的不同數目、null ORC JSON ION CSV、max 和最小值。XMLAmazon Athena 會使用這些統計資訊,儘早在查詢處理中套用限制最嚴格的篩選條件,以最佳化查詢。這項篩選會限制記憶體用量,以及為傳送查詢結果必須讀取的記錄數目。

與此同時CBO,Athena 會使用稱為規則型最佳化程式 () RBO 的功能。RBO以機械方式套用預期可改善查詢效能的規則。RBO通常是有益的,因為它的轉換旨在簡化查詢計劃。但是,由於RBORBO不執行成本計算或計劃比較,因此更複雜的查詢會使建立最佳計劃變得困難。

基於這個原因,Athena 會同時使用RBO和CBO來最佳化您的查詢。Athena 在識別到改善查詢執行的機會之後,就會建立最佳計畫。如需有關執行計畫的詳細資訊,請參閱 檢視SQL查詢的執行計畫。如需CBO運作方式的詳細討論,請參閱 AWS 大數據部落格中的 Amazon Athena 使用以成本為基礎的優化器加快查詢速度

若要產生 AWS Glue 目錄表格的統計資料,您可以使用 Athena 主控 AWS Glue 台、主控台或 AWS Glue APIs。由於 Athena 已與 AWS Glue 型錄整合,因此當您從 Amazon Athena 執行查詢時,您會自動獲得對應的查詢效能改善。

考量與限制

  • 資料表類型 — 目前,Athena 中的CBO功能僅支援 AWS Glue Data Catalog.

  • Athena 的星火 — 此CBO功能不適用於 Spark 的 Athena。

  • 定價 – 如需定價資訊,請造訪 AWS Glue 定價頁面

使用 Athena 主控台產生資料表統計

本節說明如何使用 Athena 主控台在 AWS Glue中產生資料表或資料表資料欄層級的統計資訊。如需使用 AWS Glue 產生資料表統計資料的相關資訊,請參閱開AWS Glue 發人員指南中的使用欄統計資料。

若要使用 Athena 主控台產生資料表統計資訊
  1. https://console.aws.amazon.com/athena/ 中開啟 Athena 主控台。

  2. 在 Athena 查詢編輯器的資料表清單中,為您想要的資料表選擇三個垂直點,然後選擇產生統計資訊

    Athena 查詢編輯器中的資料表內容選單。
  3. 產生統計資訊對話方塊中,選擇所有資料欄以產生資料表中所有資料欄的統計資訊,或選擇選取的資料欄來選取特定的資料欄。預設值是所有資料欄

    「產生統計資訊」對話方塊。
  4. 對於AWS Glue 服務角色,請建立或選取現有的服務角色,以授與產生統計資料的權限。 AWS Glue AWS Glue 服務角色還需要對包含資料表資料的 Amazon S3 儲存貯體的 S3:GetObject 許可。

    選擇服 AWS Glue 務角色。
  5. 選擇產生統計資料。A 產生的統計資料 table_name通知標題會顯示工作狀態。

    「正在產生統計資訊」通知橫幅。
  6. 若要在 AWS Glue 主控台中檢視詳細資料,請選擇在 Glue 中檢視

    如需在 AWS Glue 主控台中檢視統計資料的詳細資訊,請參閱AWS Glue 開發人員指南中的檢視欄統計資料

  7. 產生統計資訊之後,具有統計資訊的資料表和資料欄會在括弧中顯示統計資訊一詞,如下圖所示。

    Athena 查詢編輯器中顯示統計資訊圖示的資料表。

現在,當您執行查詢時,Athena 會針對產生統計資訊的資料表和資料欄,執行成本型最佳化。

其他資源

如需其他資訊,請參閱下列資源。

Enhance query performance using AWS Glue Data Catalog statistics (AWS YouTube channel)