日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

小麦带你看postgres(代码模块结构)

發布時間:2023/11/27 生活经验 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 小麦带你看postgres(代码模块结构) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

初始化部分(Initialization)


?

bootstrap:和系統表相關。

main:傳遞參數到后臺的pg進程。

postmaster:控制pg服務開關,創建共享內存,循環等待連接并分配服務。

libpq:與子進程通訊相關的庫。

查詢部分(Main Query Flow)

tcop:交警,分配請求到對應模塊如解析器、優化器、執行器和命令行功能。

parser:把sql語句轉化成查詢執行樹。

rewrite:規則和視圖支持部分。

optimizer:優化查詢路徑生成計劃。

optimizer_path:生成所有可能的路徑,檢查表連接順序,where條件限制,優化表的統計信息,對于可執行的計劃評估開銷。

? ? ??optimizer_geqo:遺傳(或者是祖傳?)查詢優化器評估的路徑對于要連接的表,當表的數量很少時會給很優化的結果,表太大就直接給一個一般的,可以通過參數控制是否使用這個功能。? ? ??

? ? ??optimizer_plan:拿著“optimizer_path”的結果輸出最小開銷的路徑。

optimizer_prep:處理特殊的查詢計劃。

optimizer_util:優化支持部分。

executor執行復雜的計劃包括,增刪改查。算子舉例:堆掃描、索引掃描、排序、連接、聚合、分組、去重等。

?

指令支持(Command Support)

commands:響應指令,以及簡單的功能如vacuum、create table直接在元數據(catalog)上面做了。

catalog:元數據,直接操作系統表和目錄,如索引、表、存儲過程、操作符等。

access:大量的數據訪問函數,如索引訪問、堆訪問、和事務日志。

? ? ??access_common:通用訪問方法。

? ? ??access_gin:索引相關訪問。

? ? ??access_gist:搜索樹相關訪問。

? ? ??access_hash:哈希相關訪問方法。

? ? ??access_heap:存儲數據行。

? ? ??access_index:被索引類型使用。

? ? ??access_nbtree:Lehman和Yao的B樹管理算法。

? ? ??access_spgist:空間分片的全局特征信息相關訪問。(GiST)

? ? ??access_transam:事務管理,如日志讀寫。(BEGIN/ABORT/COMMIT)

nodes:關于SQL查詢的創建或者操作叫做節點,節點一般都有類型和特殊的數據結構,節點間經常被放在鏈表里。

storage:管理大量存儲系統,提供統一后臺訪問。

? ? ??storage_buffer:共享緩存管理。

? ? ??storage_file:文件管理。

? ? ??storage_freespace:剩余空間映射表。

? ? ??storage_ipc:信號量和共享內存。

? ? ??storage_large_object:超大對象。

? ? ??storage_lmgr:鎖管理。

? ? ??storage_page:頁管理。

? ? ??storage_smgr:磁盤和存儲設備管理。

utils:工具類。

? ? ??utils_adt:包含所有PG中內建數據類型(如bool、char、date)。

? ? ??utils_cache:因為PG支持很多隨意數據類型,后臺系統需要查詢一個系統表關于這些隨意類型時會先走這個緩存。

? ? ??utils_error:錯誤反饋,從后端反饋到前端去。

? ? ??utils_fmgr:函數管理,處理動態綁定的函數調用,和系統表中定義的函數調用。

? ? ??utils_hash:哈希函數管理,被緩存和內存管理器使用以做快速查詢動態數據存儲結構。

? ? ??utils_init:大量初始化。

? ? ??utils_mb:單字節和多字節的編碼。

? ? ??utils_misc:冗余的東西(官方叫miscellaneous stuff)

? ? ??utils_mmgr:內存管理(PG進程本地)。

? ? ??utils_resowner:資源擁有者追溯。

? ? ??utils_sort:排序工具,如對元祖排序。

? ? ??utils_time:事務時間,與mvcc有關,判斷一個元祖是過期了還是未提交。

基礎支持(Support Facilities)


include:引用的文件。

lib:支持的庫,大致看了下有二插堆,布隆過濾器。

port:兼容性部分。

regex:正則表達式。

snowball:語法庫,雪球是一個語法庫,各國語言的規范都有。

replication:通過日志遷移支持流式備份。

tsearch:文本查詢庫用于支持全文查詢。

翻譯自 (https://wiki.postgresql.org/wiki/Backend_flowchart)



?

轉載于:https://www.cnblogs.com/zhejiangxiaomai/p/10653693.html

總結

以上是生活随笔為你收集整理的小麦带你看postgres(代码模块结构)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。