在此,我們簡要概述查詢必須經過的階段才能獲得結果。
必須建立從應用程式到 PostgreSQL 伺服器的連線。 應用程式將查詢傳輸到伺服器,並等待接收伺服器傳回的結果。
剖析器階段會檢查應用程式傳輸的查詢語法是否正確,並建立查詢樹。
重寫系統採用剖析器階段建立的查詢樹,並尋找要應用於查詢樹的任何規則(儲存在系統目錄中)。 它會執行規則主體中給定的轉換。
重寫系統的一個應用是在實現檢視表中。 每當對檢視表(即虛擬表)進行查詢時,重寫系統會將使用者的查詢重寫為存取檢視表定義中給定的基礎表的查詢。
規劃器/最佳化器採用(重寫的)查詢樹,並建立將作為執行器輸入的查詢計畫。
它首先建立所有可能導致相同結果的路徑。 例如,如果要掃描的關係上有索引,則掃描有兩個路徑。 一種可能性是簡單的循序掃描,另一種可能性是使用索引。 接下來,估計每個路徑執行的成本,並選擇最便宜的路徑。 最便宜的路徑會擴展成執行器可以使用的完整計畫。
執行器以遞迴方式逐步執行計畫樹,並以計畫表示的方式檢索資料列。 執行器在掃描關係時會使用儲存系統,執行排序和聯結,評估資格,最後傳回衍生的資料列。
在以下章節中,我們將更詳細地介紹上述每個項目,以便更好地了解PostgreSQL的內部控制和資料結構。
如果您在文件中看到任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表格來報告文件問題。