PostgresQL FDW 原始碼分析之總結

2021-07-14 08:06:16 字數 536 閱讀 7108

1. fdw 先在 getforeignrelsize() 中通過本地或向 remote 端查詢的方式,得到了對 sql 語句基本掃瞄方式的成本估算;

2. 然後在 postgresgetforeignpaths() 計算出各種情況的 plan path,包括基礎掃瞄方法,和各種 join 方法,path 中帶有對這種 plan 處理方式的描述和成本估算;

3. 在從多個 plan path 中選出乙個 best path 後,在 postgresgetforeignplan() 中,從這個 path 中恢復出需要在執行器執行的 sql 語句;

4. 在 postgresbeginforeignscan() 中作一些資源申請等準備工作;

5. 最後在 postgresiterateforeignscan() 中,在 remote 建立要執行 sql 語句的游標,然後通過游標取回查詢結果。

要點:1.  fdw 會區分 where 或 join 等限制條件,將能夠傳送到 remote 端的限制條件傳送到 remote 端執行,此時就只需從 remote 端僅取回需要的資料了。

AbstractCollection原始碼分析

abstractcollection抽象類提供了collection的骨架實現,collection分析請看 這裡直接看它的 是如何實現的.public abstract iterator iterator 該方法沒有實現.public abstract int size 該方法沒有實現.publi...

ThreadPoolExecutor原始碼閱讀

執行緒池解決兩個問題 一是復用執行緒,減少建立銷毀執行緒帶來系統開銷 二是限定系統資源使用邊界,避免大量執行緒消耗盡系統記憶體 適用於互不依賴,執行時間短,不需要對執行緒控制操作的執行緒 新增任務時,1.若執行緒數量小於corepoolsize,則新增執行緒執行任務 2.若執行緒數量大於等於core...

OrangePi One Android 原始碼編譯

一 系統環境搭建參照 二 lichee原始碼編譯 1.檢視help build.sh h2.配置核心 cd linux 3.4 make arch arm menuconfig 進入配置頁面,上下移動列表,空格是選擇列表,左右移動選擇退出選項 3.首次編譯執行清除 在 lichee linux3.4...