

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# 查詢計劃和執行工作流程
<a name="c-query-planning"></a>

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

![\[領導節點的查詢規劃和執行工作流程。\]](http://docs.aws.amazon.com/zh_tw/redshift/latest/dg/images/07-QueryPlanning.png)


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

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

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

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

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

   您可以使用 [EXPLAIN](r_EXPLAIN.md) 命令來檢視查詢計畫。查詢計畫為用於分析和調校複雜查詢的基礎工具。如需詳細資訊，請參閱[建立和解譯查詢計畫](c-the-query-plan.md)。

1. 執行引擎會將查詢計畫轉譯為*步驟*、*區段*和*串流*：  
**步驟**  
每個步驟為查詢執行期間所需的個別操作。您可以結合步驟，以允許運算節點執行查詢、聯結或其他資料庫操作。  
**區段**  
可以透過單一程序完成的數個步驟組合，也是可由運算節點配量執行的最小的編譯單位。*配量*是 Amazon Redshift 中平行處理的單位。串流中的區段會平行執行。  
**串流**  
要透過可用運算節點配量打包的區段的集合。

   執行引擎會根據步驟、區段和串流產生編譯的程式碼。相較於轉譯的程式碼，編譯的程式碼執行得更快速，並且使用較少運算容量。然後將此編譯的程式碼播送至運算節點。
**注意**  
設定查詢的基準時，應該一律比較查詢的第二個執行的時間，因為第一個執行時間包含編譯程式碼的間接。如需詳細資訊，請參閱[影響查詢效能的因素](c-query-performance.md)。

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

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

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

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