跳至內容

為什麼我執行 Amazon Athena 查詢需要很長的時間?

1 分的閱讀內容
0

我的 Amazon Athena 查詢執行時間長,查詢佇列時間也長。

解決方法

您的Athena 查詢可能會在執行前暫時排入佇列。由於佇列時間較長或引擎處理時間較長,查詢可能需要較長時間才能執行。

為您的查詢 ID 呼叫 GetQueryExecution API。此 API 會傳回關於單一處理的查詢的資訊。您可以在 API 回應的 QueryExecutionStatistics 參數中檢視此資訊。您也可以使用 Athena 查詢編輯器來檢視已完成查詢的統計資料和詳細資訊

較長的佇列時間

由於後端的資源使用量較高,您的查詢可能會有較長的佇列時間。Athena 中的佇列時間取決於資源配置。將查詢提交給 Athena 後,系統會根據下列條件指派資源和處理查詢:

  • 整體服務負載
  • 新請求的數量

如果您的查詢佇列時間較長,請執行下列動作來改善查詢效能:

  • 將您的查詢分佈於一段時間。如果您以批次方式提交查詢,請更頻繁地提交小批次,而不是以較小頻率提交大型批次。這可以縮短查詢保留在已排入佇列狀態的時間。
  • 執行簡單和複雜查詢的組合,而不是同時執行一組複雜的查詢。先提交簡單的查詢,然後提交複雜的查詢。由於簡單的查詢處理很快,因此您可以將資源分配給複雜的查詢,避免較長的佇列時間。
  • 對於排定的查詢,請避免在整點開始時和整點過後30分鐘這兩個時間段進行。這是因為大多數自動指令碼和 cron 作業都在這些時間範圍內執行。在這些期間,服務負載通常很高,可能會導致佇列時間增加。
  • 如果您的使用情況允許,請在多個 AWS 區域中執行查詢,以分散負載並協助獲得更多後端資源。

**重要事項:**您可能會產生 Amazon Simple Storage Service (Amazon S3) 跨區域費用。

較長的計劃時間

當您過度分割表格時,可能會導致計劃時間較長。具有數百或數千個分割區的表格可能導致查詢處理速度較慢。為改善查詢效能,請執行下列任一動作:

  • 減少分割區的數量。
  • 一次查詢一個分割區並串連結果。
  • 使用分割區投影加快高度分割的表格的查詢處理速度,並自動化分割區管理。

較長的處理時間

如果查詢的引擎處理時間較長,請執行下列動作以改善查詢效能:

  • 對表格進行分割,以限制每個查詢掃描的資料量。如需詳細資訊,請參閱在 Athena 中分割資料
  • 如果您查詢的 Amazon S3 檔案很小 (例如小於 128 MB),則查詢處理時間可能會較長。時間增加是因為任務增加了,例如開啟 S3 檔案、列出目錄和設定資料傳輸時。在 Amazon EMR 中使用 S3DistCp 工具,將較小的 S3 檔案合併為較大的物件。較大的物件需要的 Amazon S3 請求較少,進而減少查詢處理時間。
  • 執行其他儲存和查詢最佳化

**注意:**您可以根據區域中的預設查詢相關配額同時向 Athena 提交多個查詢。Athena 會根據整體服務負載和處理查詢的新請求數量指派資源。因此,所有提交的查詢可能無法同時執行。

相關資訊

Athena 效能調整

AWS 官方已更新 2 年前