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