postgres 数据库架构介绍--1
簡介
?? postgres 數據庫是目前最流行的開源關系型數據庫之一,其具有豐富的數據類型、多版本并發控制、同步/異步流復制、嵌套事務和預寫式日志等功能,廣泛地應用于金融、物流、制造/電信等領域
基本概念
1 數據庫cluster[邏輯]
database cluster:包含各種數據庫對象,如表,索引,視圖,索引,函數和序列等
2 數據庫cluster [物理]
| PG_VERSION | 包含postgres的版本號信息 |
| pg_hba.conf | 客戶端認正配置文件 |
| pg_ident.conf | postgres 用戶名映射文件 |
| postgresql.conf | postgres 配置文件,包含各種參數設置:共享內存大小,最大連接數等 |
| postgresql.auto.conf | 更改系統時存放各種配置參數信息 |
| base | 創建數據庫所在目錄 |
| global | 全局系統表,pg_class和pg_control等 |
| pg_xact | 事務提交狀態日志 |
| pg_dynshmem | 記錄動態共享內存信息 |
| pg_logical | 存放邏輯解析過程中生成的數據 |
| pg_wal | 存放預寫式日志 |
| pg_stat | 統計信息的持久性文件 |
| pg_subtrans | 存放子事務狀態日志 |
| pg_twophase | 存放兩階段提交事務狀態信息 |
架構介紹
1 進程架構
??postgres數據庫是一個多進程架構,采用典型服務端–客戶端結構,進程間通過共享內存進行通信。其中最重要的兩個進程server process (postmaster)和backend process. postmaster 負責整個系統的啟動與關閉,管理整個數據庫集群,同時接收來自客戶端的連接請求,后fork出一個服務進程backend process. postmaster 為客戶端提供服務,執行客戶端的各種命令。
??此外postmaster進程還啟動一些輔助進程共同實現數據庫的各種功能。
如果許多客戶端(如WEB應用程序)頻繁地重復與PostgreSQL服務器的建立連接與斷開,就會增加建立連接和創建后端進程的成本,因為PostgreSQL沒有實現本地連接池特性。這種情況會對數據庫服務器的性能產生負面影響。要處理這種情況,通常使用池中間件(pgbouncer或pgpool-II)。
2 共享內存架構
??在postgres數據庫中,內存分為共享內存和私有內存[backend process]。
私有內存主要由temp_buffers、work_mem和maintenance_work_mem組成
| temp_buffers | 存放執行過程中的臨時數據或者臨時表 |
| work_mem | 此區域用于ORDER by和DISTINCT操作,以及各種joins操作 |
| maintenance_work_mem | 此區域用于執行各種維護性操作如 VACUUM、REINDEX操作 |
共享內存包括共享緩沖池、WAL buffer、SLRU<clog和subtrans日志>
| shared buffer pool | 存放table和index數據頁 |
| WAL buffer | 用于存放WAL日志,加載或者持久化 |
| SLRU | (子)事務狀態日志緩沖區,包括CLOG和SUBSTRANS |
參考:https://www.interdb.jp/pg/pgsql01.html
總結
以上是生活随笔為你收集整理的postgres 数据库架构介绍--1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 弘辽科技:淘宝平台如何处理商家sku作弊
- 下一篇: mysql编写存储过程给员工加工资_一个