PostgreSQL的核心架構

2021-10-14 04:49:20 字數 1284 閱讀 6129

注意本人的部落格都遷移到本人自己搭建的部落格位址,通過此處可檢視。

1. 訪問介面總體圖

1. 程序和記憶體結構圖

2. 主程序 postmaster

是整個資料庫例項的總控程序,負責啟動和關閉該資料庫例項。

3. syslogger(系統日誌)程序

需要在postgres.conflogging_collection設定為on,此時主程序才會啟動syslogger輔助程序。

4. bgwriter(後台)程序

把共享記憶體中的髒頁寫到磁碟上的程序。主要是為了提高插入、更新和刪除資料的效能。

5. walwrite(預寫式日誌)程序

wal:write ahead log(預寫式日誌)

在修改資料之前把修改操作記錄到磁碟中,以便後面更新實時資料時就不需要資料持久化到檔案中。

6. pgarch(歸檔)程序

wal日誌會被迴圈使用,pgarch在歸檔前會把wal日誌備份出來。通過pity(point in time recovery)技術,可以對資料庫進行一次全量備份後,該技術將備份時間點之後的wal日誌通過歸檔進行備份,使用資料庫的全量備份再加上後面產生的wal日誌,即可把資料庫向前推到全量備份後的任意乙個時間點。

7. autovacuum(自動清理)程序

8. pgstat(統計資料收集)程序

做資料的統計收集工作。主要用於查詢優化時的代價估算,包括乙個表和索引進行了多少次的插入、更新、刪除操作,磁碟塊讀寫的次數、行的讀次數。pg_statistic中儲存了pgstat收集的各類資訊。

9. 共享記憶體

postgresql啟動後,會生成一塊共享記憶體,用於做資料塊的緩衝區,以便提高讀寫效能。wal日誌緩衝區和clog緩衝區也存在共享記憶體中,除此之外還有全域性資訊比如程序、鎖、全域性統計等資訊也儲存在共享記憶體中。

使用"mmap()「方式的共享記憶體,使用此記憶體的好處是不在需要配置"system v"共享記憶體的引數"kernel.shmmax"和"kernel.shmall」,就能使用較大的共享記憶體。

10. 本地記憶體

非全域性儲存的資料都存在本地記憶體中,主要包括:

postgresql核心架構 安裝後的目錄介紹

程序和記憶體架構圖 主程序 postmaster 位於安裝目錄的bin目錄下,主程序是整個資料庫例項的總控程序,負責啟動和關閉該資料庫例項。可以執行postmaster postgres命令並加上合適的引數啟動資料庫,實際上postmaster命令是乙個指向postgres的鏈結。更多的時候是通過p...

postgresql核心架構 安裝後的目錄介紹

程序和記憶體架構圖 主程序 postmaster 位於安裝目錄的bin目錄下,主程序是整個資料庫例項的總控程序,負責啟動和關閉該資料庫例項。可以執行postmaster postgres命令並加上合適的引數啟動資料庫,實際上postmaster命令是乙個指向postgres的鏈結。更多的時候是通過p...

spark核心架構

driver部分的 sparkconf sparkcontext driver 部分 val conf new sparkconf val sc new sparkcontext conf end executor部分 分布到集群中的 比如 textfile flatman map worker 管...