简介

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

基本概念

1 数据库cluster[逻辑]
database cluster:包含各种数据库对象,如表,索引,视图,索引,函数和序列等

2 数据库cluster [物理]

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日志进行归档备份,加强数据库的高可靠性和高可用性,防止数据意外丢失。


如果许多客户端(如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<clog和subtrans日志>

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

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

postgres 数据库架构介绍--1相关推荐

  1. 昆仑分布式数据库架构介绍

    一.前言 昆仑分布式数据库集群(下文简称昆仑数据库)是一个分布式关系数据库管理系统,面向TB和PB级别海量数据处理,以高吞吐量和低延时处理海量数据高并发读写请求. 它提供健壮的事务ACID保障,高效易 ...

  2. Mysql数据库架构介绍

    一.Mysql单例数据库架构 1.Mysql体系介绍 网络连接层:提供与Mysql服务器建立连接的支持 核心服务层:主要包含系统管理和控制工具.连接池.SQL接口.解析器.查询优化器和缓存六个部分 存 ...

  3. 关系型数据库架构介绍及主流应用场景

    前言 做为目前主流的模型数据库类型,关系型数据库的架构随着业务规模的增长做出相应的变化,本章我们来学习关系型数据库架构的变化以及主流的应用场景. 关系型数据库架构 随着业务规模增大,数据库存储的数据量 ...

  4. GEO数据库架构介绍

    欢迎关注"生信修炼手册"! GEO是一个国际化的开源项目,允许研究者提交自己的数据到该数据库,在世界范围内公开共享自己的数据,网址如下 https://www.ncbi.nlm.n ...

  5. MySQL第4天:MySQL的架构介绍之修改数据库编码格式

    MySQL的架构介绍之修改数据库编码格式 1.配置文件介绍 #编写时间:2017.3.6 #编写地点:广州 上一篇文章可知mysql的配置文件在:/usr/share/mysql,其中/usr/sha ...

  6. 数据库高级知识——mysql架构介绍(二)

    文章目录 1.Mysql逻辑架构介绍 1.1 总体概览 1.2 查询说明 2.Mysql存储引擎 2.1 查看命令 2.2 各个引擎简介 2.3 MyISAM和InnoDB 2.4 阿里巴巴.淘宝用哪 ...

  7. 达梦数据库——DM8安装操作及体系架构介绍

    文章目录 一.数据库行业的发展趋势 二.国产数据库的现状 1.自主研发 三.达梦公司的介绍和达梦产品 1.达梦公司的由来 2.达梦公司的产品线 四.DM8的安装及实例的管理 1.软件信息收集 2.硬件 ...

  8. 大型系统架构设计-阿里淘宝天猫双十一数据库核心技术介绍

    目录 零.双十一是什么? 一.2013 双十一数据库指导思想 1.知己知彼,百战不殆 (1)如何做到知己 (2)如何做到知彼 2.平时多流汗,战时少流血 (1)真实环境压测之缓存穿透 (2)MetaQ ...

  9. 三种数据库架构的介绍

    从数据库架构设计的角度,主要有三种,Shared Everything.Shared Disk以及Shared Nothing. 1. Shared Everything 一般指的是单个主机的环境,完 ...

最新文章

  1. 【青少年编程】【三级】加法出题机
  2. elasticsearch 第四篇(API约定)
  3. myeclipse 添加mysql数据库_myeclipse添加数据库
  4. BZOJ4448:[SCO2015]情报传递
  5. 2013年度【博客之星评选活动】正在进行中,希望大家支持下,十分感谢!
  6. 苹果Mac强大的网络流量分析工具:Debookee
  7. MyBatis学习总结——调用存储过程
  8. CCNA学习指南 第七章 下载
  9. dnf服务器字幕乱码win10系统,Windows10下输入法设置 教你避免DNF卡顿
  10. css设置字体颜色怎么设,css里面怎么设置字体颜色?
  11. 优化工具MOZ功能详细解说
  12. 导致网页图片字体模糊的原因
  13. 大数据思维,到底是什么?
  14. 护卫神备份mysql_护卫神好备份系统数据库怎么备份?
  15. 编程语言 vs. 二次元美女
  16. 标准化互信息NMI计算步骤及其Python实现
  17. 1135 mysql_Mysql实例mysql中一个普通ERROR 1135 (HY000)错误引发的血案
  18. 端到端机器学习”中的“端到端”应如何理解
  19. SAP MM 委外加工
  20. k8s常见报错解决--持续更新

热门文章

  1. java 使用mediainfo_音视频文件编码分析软件MediaInfo使用简介
  2. 德语c2大语言证书的作用,说说德语语言水平级别A1,A2,B1,B2,C1,C2是啥级别
  3. 阿里邮件API返回 InvalidUser.NotFound. The specified user does not found
  4. 用qq邮箱,以阿里邮箱的名义发出邮件
  5. vue+elmentui+ueditor +数学公式 编辑器
  6. FPGA内部m4k资源使用
  7. 6759字25个APP测试流程以及资料合集【乐搏TestPro】
  8. 思科Talos深度解析“WannaCry勒索软件
  9. PMP通过率暴跌,是否跟新大纲有关?
  10. PHP的内码转换函数 mb_convert_encoding()