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

1 分的閱讀內容
0

我的 Amazon Athena 查詢需要很長時間才能執行。查詢佇列時間很長。如何加快查詢處理?

簡短描述

Athena 是無伺服器互動式查詢服務。將查詢提交給 Athena 之後,查詢會在後端的資源集區上執行。這些資源由區域中的所有使用者共用。您的查詢可能會在執行前暫時排入佇列。由於佇列時間較長或引擎處理時間較長,因此查詢通常需要較長的時間才能執行。

解決方法

為您的 查詢 ID 呼叫 GetQueryExecution API。此 API 會傳回關於查詢單一處理的資訊。資訊包括有用的詳細資料,如下所示:

  • 查詢佇列所用時間 (QueryQueueTimeInMillis)
  • 查詢規劃所用時間 (QueryPlanningTimeInMillis)
  • 引擎處理時間 (EngineExecutionTimeInMillis)

您可以在 API 回應的 Statistics 參數中檢視此資訊。

佇列時間較長

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

  • 整體服務負載
  • 傳入要求數目

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

  1. 考慮將查詢分佈於一段時間。如果您以批次方式提交查詢,請更頻繁地提交小批次,而不是以較小頻率提交大型批次。這可能會減少查詢停留在 QUEED 狀態的時間,並改善整體查詢處理時間。
  2. 執行簡單和複雜查詢的組合,而不是同時執行一組複雜的查詢。另請考慮先提交簡單的查詢,然後提交複雜的查詢。由於簡單的查詢處理速度很快,因此可以將資源分配給複雜的查詢,而不會產生較長的佇列時間。
  3. 如果您在情景中排程查詢,例如產生定期報告或載入新分割區,請避免在小時開始和超過小時 30 分鐘的時間範圍排程查詢。大多數自動化指令碼和 cron 作業都在這些時間範圍內執行。因此,在這些期間,服務負載通常會較高,從而增加佇列時間。
  4. 如果您的使用情況允許,請在多個區域中執行查詢。這可以分配負載並幫助獲取更多後端資源。這種方法可以減少查詢佇列時間。
    **重要:**您可能會產生 Amazon Simple Storage Service (Amazon S3) 跨區域費用。

規劃時間較長

如果您的查詢規劃時間較長,可能是表格過度分割所造成的。具有數百或數千個分割區的表格可能導致查詢處理速度較慢。若要改善查詢效能,請嘗試下列一或多項動作:

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

處理時間較長

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

  1. 對表格進行分割,以限制每個查詢掃描的資料量。分割區充當虛擬欄,並根據欄值將相關資料保存在一起。對表格進行分割可改善查詢效能並降低成本。如需詳細資訊,請參閱分割資料
  2. 如果您查詢的 Amazon S3 檔案很小 (通常小於 128 MB),則查詢處理時間可能會較長。時間的增加源於任務所涉及的開銷,例如開啟 S3 檔案、列出目錄和設定資料傳輸。在 Amazon EMR 上使用 S3DistCp 公用程式,將較小的 S3 檔案合併為較大的物件。較大的物件需要的 Amazon S3 請求較少,進而減少查詢處理時間。
  3. 執行其他儲存和查詢最佳化,以改善效能並縮短引擎處理時間。如需詳細資訊,請參閱 Amazon Athena 的 10 大效能調整秘訣

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


相關資訊

Athena 效能調整

AWS 官方
AWS 官方已更新 3 年前