查詢計劃和執行工作流程 - Amazon Redshift

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

查詢計劃和執行工作流程

下表提供查詢計畫和執行工作流程的整體檢視。

查詢計畫和執行工作流程會遵循這些步驟:

  1. 領導者節點接收查詢並剖析 SQL。

  2. 剖析器會產生初始查詢樹狀目錄,它是原始查詢的邏輯呈現。然後,Amazon Redshift 會將此查詢樹狀目錄輸入至查詢最佳化器。

  3. 最佳化器會進行評估,並且在必要時重新編寫查詢以最佳化其效率。此程序有時會造成建立多個相關的查詢來取代單一查詢。

  4. 最佳化器會產生一個查詢計畫 (或數個,如果先前的步驟產生多個查詢) 以利用最佳效能執行。查詢計畫會指定執行選項,例如:聯結類型、聯結順序、彙整選項和資料配送需求。

    您可以使用 EXPLAIN 命令來檢視查詢計畫。查詢計畫為用於分析和調校複雜查詢的基礎工具。如需詳細資訊,請參閱 查詢計劃

  5. 執行引擎會將查詢計畫轉譯為步驟區段串流

    步驟

    每個步驟為查詢執行期間所需的個別操作。您可以結合步驟,以允許運算節點執行查詢、聯結或其他資料庫操作。

    區段

    可以透過單一程序完成的數個步驟組合,也是可由運算節點配量執行的最小的編譯單位。配量是 Amazon Redshift 中平行處理的單位。串流中的區段會平行執行。

    串流

    要透過可用運算節點配量打包的區段的集合。

    執行引擎會根據步驟、區段和串流產生編譯的程式碼。相較於轉譯的程式碼,編譯的程式碼執行得更快速,並且使用較少運算容量。然後將此編譯的程式碼播送至運算節點。

    注意

    設定查詢的基準時,應該一律比較查詢的第二個執行的時間,因為第一個執行時間包含編譯程式碼的間接。如需詳細資訊,請參閱 影響查詢效能的因素

  6. 運算節點配量會平行執行查詢區段。隨著此程序,Amazon Redshift 會利用最佳化的網路通訊、記憶體和磁碟管理,在查詢計畫步驟之間傳遞中繼結果。這也有助於加快查詢執行速度。

步驟 5 和 6 會對每個串流發生一次。引擎會為一個串流建立可執行的區段,並將它們傳送至運算節點。當該串流的區段完成時,引擎會產生下一個串流的區段。以此方式,引擎可以分析前一個串流中發生的動作 (例如,操作是否基於磁碟) 以影響下一個串流中區段的產生。

當運算節點完成時,它們會將查詢結果傳回至領導者節點供最終處理。領導者節點會將資料合併至單一結果集,並解決任何需要的排序或彙整。然後領導者節點會將結果傳回至用戶端。

注意

在查詢執行期間,運算節點可能會在必要時傳回一些資料至領導者節點。例如,如果您的子查詢具有 LIMIT 子句,則會於資料在叢集間重新配送供進一步處理之前,將限制套用到領導者節點。