postgreSQL多进程架构

数据库cluster[逻辑]

包含各种数据库对象,如表,索引,视图,函数和序列等
postgreSQL多进程架构_第1张图片

数据库cluster[物理]

postgreSQL多进程架构_第2张图片

文件 描述
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 存放两阶段提交事务状态信息

进程架构

postgres数据库是一个多进程架构,采用典型服务端–客户端结构,进程间通过共享内存进行通信。其中最重要的两个进程server process (postmaster)和backend process. postmaster 负责整个系统的启动与关闭,管理整个数据库集群,同时接收来自客户端的连接请求,后fork出一个服务进程backend process. postmaster 为客户端提供服务,执行客户端的各种命令。
此外postmaster进程还启动一些辅助进程共同实现数据库的各种功能。

  1. background writer:后台写进程,负责将缓冲池的脏页数据写回磁盘;
  2. checkpointer:检查点,每隔一定周期将脏页刷盘,包括共享缓冲池和SLRU脏数据;
  3. autovacuum:自动清理进程,用于回收被删除元组空间,避免数据文件无限膨胀;
  4. WAL writer: WAL写进程,负责将wal buffer 刷写至磁盘,缓解业务高峰时日志的并发写入,对数据库性能造成影响;
  5. statistics collector:信息收集进程,负责收集数据库系统运行的统计信息,主要用于查询优化时的代价估算;
  6. pgArch:日志归档进程,负责将WAL日志进行归档备份,加强数据库的高可靠性和高可用性,防止数据意外丢失;
    postgreSQL多进程架构_第3张图片

共享内存架构

在postgres数据库中,内存分为共享内存和私有内存[backend process]。
私有内存主要由temp_buffers、work_mem和maintenance_work_mem组成

type description
temp_buffers 存放执行过程中的临时数据或者临时表
work_mem 此区域用于ORDER by和DISTINCT操作,以及各种joins操作
maintenance_work_mem 此区域用于执行各种维护性操作如 VACUUM、REINDEX操作

共享内存包括共享缓冲池、WAL buffer、SLRU

type description
shared buffer pool 存放table和index数据页
WAL buffer 用于存放WAL日志,加载或者持久化
SLRU (子)事务状态日志缓冲区,包括CLOG和SUBSTRANS

postgreSQL多进程架构_第4张图片

你可能感兴趣的:(postgresql,架构,数据库)