AWS Athena - 效能最佳化



查詢最佳化的最佳實踐

AWS Athena 是一款無伺服器查詢服務,允許您使用標準 SQL 分析儲存在 Amazon S3 中的資料。但是,當我們處理大型資料集時,最佳化查詢效能變得非常重要,以確保更快的執行時間並降低成本。

本章重點介紹了一些提高 AWS Athena 查詢效能的最佳實踐。

分割槽您的資料

分割槽是最佳化 AWS Athena 查詢效能最有效的方法之一。您可以根據日期、區域或產品類別等列將資料分成子集。其好處在於 AWS Athena 只掃描相關的分割槽,而不是整個資料集,這可以顯著減少查詢時間和掃描的資料量。

如何分割槽資料?

建立表時可以使用 PARTITIONED BY 子句。

示例

請檢視以下示例:

CREATE EXTERNAL TABLE IF NOT EXISTS your_table_name (
   column1 STRING,
   column2 INT
)
PARTITIONED BY (year STRING, month STRING)
LOCATION 's3://your-bucket/folder/';

建立表後,使用 MSCK REPAIR TABLE 命令載入分割槽,如下所示:

MSCK REPAIR TABLE your_table_name;

最佳化檔案大小和格式

為了最佳化您的查詢,您應該選擇正確的檔案大小和資料格式。讓我們看看在查詢時需要注意的一些關於檔案大小和檔案格式的重要事項:

關於檔案大小的重要事項

  • Aws Athena 處理多個小檔案效率低下,因此小檔案會導致更高的成本。因此,檔案不應太小。
  • 另一方面,非常大的檔案可能會降低效能,因為它們需要更長的時間才能讀取和處理。
  • 建議將檔案大小保持在 **128 MB 到 1 GB** 之間,以在效率和效能之間取得平衡。

關於檔案格式的重要事項

**列式格式**(例如 Parquet 和 ORC)非常適合 AWS Athena。這些格式按列而不是按行儲存資料,這意味著 Athena 只讀取您查詢的列。

例如,如果您只查詢具有 10 列的資料集中的 3 列,則列式格式將只掃描所需的 3 列。這使得查詢速度更快並減少了掃描的資料量。

Parquet 和 ORC 等格式還支援資料壓縮,這可以進一步提高效能。

使用壓縮

您應該在將資料儲存到 Amazon S3 之前對其進行壓縮,因為它可以提高 AWS Athena 中的查詢效能。眾所周知,壓縮會減小資料大小,這意味著 Athena 在執行查詢時需要掃描的資料更少。

Gzip、SnappyZlib 是 Athena 中支援的一些壓縮格式。

使用選擇性查詢限制資料掃描

如果您想最佳化效能並降低查詢成本,請嘗試不要使用 Athena 中的 **SELECT *** 查詢掃描整個表。與其如此,請始終只選擇分析所需的特定列。您掃描的資料越多,Athena 處理查詢所需的時間和資源就越多,這將增加執行時間和成本。

例如,使用如下查詢代替 **SELECT ***:

SELECT column1, column2 FROM your_table WHERE condition;

對重複查詢使用快取

AWS Athena 為我們提供了 **結果快取** 功能,該功能最多可儲存 45 天的查詢結果。如果您在 45 天內執行相同的查詢,Athena 將立即返回快取的結果,而無需重新處理資料,這意味著它不需要掃描新資料。

此出色功能不僅提高了效能,還降低了查詢成本。

廣告