1. 程式人生 > >PostgreSQL資料庫核心分析學習(一)

PostgreSQL資料庫核心分析學習(一)

PostgreSQL 資料庫由連線管理系統(系統控制器)、編譯執行系統、儲存管理系統、事務系統和系統表五大部分組成。

2.1系統表

  • 資料字典是關係資料庫系統管理控制資訊的核心

  • 在postgreSQL資料庫系統中,系統表扮演資料字典的角色

  • 存放結構元資料,普通表、檢視

  • 由SQL命令關聯的系統表操作自動維護

  • 每一個數據庫都有自己的一套系統表,來源於資料庫建立時從模板資料庫拷貝的,也有少數系統表是資料庫共享的,表示的是所有資料庫資訊

2.1.1主要系統表功能及依賴關係

  • 當訪問一個物件時,名字空間搜尋順序

  1. 特殊名字空間,僅用於建立模式

  2. 臨時表的名字空間

  3. 系統表的名字空間

  • 物件識別符號(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

  1. Smart shutdown:等待所有子程序完成當前任務後在安全關閉系統,對應sigterm訊號

  2. fast shutdown:向所有子程序發出sigterm訊號,等待子程序接收到這個訊號回滾當前事務並退出後再安全關閉系統,對應sigint訊號

  3. immediate shutdown:向所有子程序發sigout訊號,子程序馬上退出,系統非正常關閉,對應sigout訊號

2.5.1SysLogger系統日誌程序

  • log_destination:配置日誌輸出目標

  • logging_filename:配置日誌檔名稱命名規則

  • logging_collector:是否開啟日誌收集器,on表示啟動日誌功能,否則系統不產生系統日誌輔助程序

  • log_dirctory:配置日誌輸出資料夾

  • log_rotation_size:配置日誌檔案大小