postgres 数据库架构介绍--1

简介

   postgres 数据库是目前最流行的开源关系型数据库之一,其具有丰富的数据类型、多版本并发控制、同步/异步流复制、嵌套事务和预写式日志等功能,广泛地应用于金融、物流、制造/电信等领域

基本概念

1 数据库cluster[逻辑]
database cluster:包含各种数据库对象,如表,索引,视图,索引,函数和序列等
postgres 数据库架构介绍--1_第1张图片
2 数据库cluster [物理]
postgres 数据库架构介绍--1_第2张图片

files description
PG_VERSION 包含postgres的版本号信息
pg_hba.conf 客户端认正配置文件
pg_ident.conf postgres 用户名映射文件
postgresql.conf postgres 配置文件,包含各种参数设置:共享内存大小,最大连接数等
postgresql.auto.conf 更改系统时存放各种配置参数信息
subdirectories description
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进程还启动一些辅助进程共同实现数据库的各种功能。

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

postgres 数据库架构介绍--1_第3张图片
如果许多客户端(如WEB应用程序)频繁地重复与PostgreSQL服务器的建立连接与断开,就会增加建立连接和创建后端进程的成本,因为PostgreSQL没有实现本地连接池特性。这种情况会对数据库服务器的性能产生负面影响。要处理这种情况,通常使用池中间件(pgbouncer或pgpool-II)。

2 共享内存架构
  在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

postgres 数据库架构介绍--1_第4张图片

参考:https://www.interdb.jp/pg/pgsql01.html

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