PostgreSQL資料庫核心分析學習(一)
PostgreSQL 資料庫由連線管理系統(系統控制器)、編譯執行系統、儲存管理系統、事務系統和系統表五大部分組成。
2.1系統表
-
資料字典是關係資料庫系統管理控制資訊的核心
-
在postgreSQL資料庫系統中,系統表扮演資料字典的角色
-
存放結構元資料,普通表、檢視
-
由SQL命令關聯的系統表操作自動維護
-
每一個數據庫都有自己的一套系統表,來源於資料庫建立時從模板資料庫拷貝的,也有少數系統表是資料庫共享的,表示的是所有資料庫資訊
2.1.1主要系統表功能及依賴關係
-
當訪問一個物件時,名字空間搜尋順序
-
特殊名字空間,僅用於建立模式
-
臨時表的名字空間
-
系統表的名字空間
-
物件識別符號(OID),用於整個資料庫系統中唯一標識一個數據庫物件,包括資料庫、表、檢視、索引等
-
pg_tablespace由同一個資料集簇內的所有資料共享,並不是每一個數據庫都有自己的
2.1.2系統檢視
2.2.1initdb的使用
-
initdb用來初始化資料集簇的程式,負責建立資料庫目錄、系統表、模板資料庫
-
語法命令:initdb[option...] --pgdata | -D directory
-
2.3 PostgreSQL程序結構
-
最主要的兩個程序是守護程序Postmaster和服務程序Postgres,守護程序負責整個系統的啟動和關閉,監聽並接受客戶端的請求,分配服務程序。服務程序接受並執行客戶端傳送的命令
-
守護程序啟動後臺輔助程序:Syslogger(系統日誌程序)、PgStat(統計資料收集程序)、AutoVacuum(系統自動清理程序)
-
在守護程序進入迴圈監聽中時啟動如下程序:BgWriter(後臺寫程序)、WalWriter(預寫式日誌程序)、PgArch(預寫式日誌歸檔程序)
-
POstmaster總是監聽使用者連線請求並未使用者分配服務程序Postgres,而Postgres負責為客戶端執行各種命令
2.4守護程序Postmaster
2.4.4訊號處理函式pmdie
-
Smart shutdown:等待所有子程序完成當前任務後在安全關閉系統,對應sigterm訊號
-
fast shutdown:向所有子程序發出sigterm訊號,等待子程序接收到這個訊號回滾當前事務並退出後再安全關閉系統,對應sigint訊號
-
immediate shutdown:向所有子程序發sigout訊號,子程序馬上退出,系統非正常關閉,對應sigout訊號
2.5.1SysLogger系統日誌程序
-
log_destination:配置日誌輸出目標
-
logging_filename:配置日誌檔名稱命名規則
-
logging_collector:是否開啟日誌收集器,on表示啟動日誌功能,否則系統不產生系統日誌輔助程序
-
log_dirctory:配置日誌輸出資料夾
-
log_rotation_size:配置日誌檔案大小