postgres 数据库架构介绍--1
简介
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进程还启动一些辅助进程共同实现数据库的各种功能。
- background writer:后台写进程,负责将缓冲池的脏页数据写回磁盘,
- checkpointer:检查点,每隔一定周期将脏页刷盘,包括共享缓冲池和SLRU脏数据
- autovacuum:自动清理进程,用于回收被删除元组空间,避免数据文件无限膨胀
- WAL writer: WAL写进程,负责将wal buffer 刷写至磁盘,缓解业务高峰时日志的并发写入,对数据库性能造成影响
- statistics collector:信息收集进程,负责收集数据库系统运行的统计信息,主要用于查询优化时的代价估算
- 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相关推荐
- 昆仑分布式数据库架构介绍
一.前言 昆仑分布式数据库集群(下文简称昆仑数据库)是一个分布式关系数据库管理系统,面向TB和PB级别海量数据处理,以高吞吐量和低延时处理海量数据高并发读写请求. 它提供健壮的事务ACID保障,高效易 ...
- Mysql数据库架构介绍
一.Mysql单例数据库架构 1.Mysql体系介绍 网络连接层:提供与Mysql服务器建立连接的支持 核心服务层:主要包含系统管理和控制工具.连接池.SQL接口.解析器.查询优化器和缓存六个部分 存 ...
- 关系型数据库架构介绍及主流应用场景
前言 做为目前主流的模型数据库类型,关系型数据库的架构随着业务规模的增长做出相应的变化,本章我们来学习关系型数据库架构的变化以及主流的应用场景. 关系型数据库架构 随着业务规模增大,数据库存储的数据量 ...
- GEO数据库架构介绍
欢迎关注"生信修炼手册"! GEO是一个国际化的开源项目,允许研究者提交自己的数据到该数据库,在世界范围内公开共享自己的数据,网址如下 https://www.ncbi.nlm.n ...
- MySQL第4天:MySQL的架构介绍之修改数据库编码格式
MySQL的架构介绍之修改数据库编码格式 1.配置文件介绍 #编写时间:2017.3.6 #编写地点:广州 上一篇文章可知mysql的配置文件在:/usr/share/mysql,其中/usr/sha ...
- 数据库高级知识——mysql架构介绍(二)
文章目录 1.Mysql逻辑架构介绍 1.1 总体概览 1.2 查询说明 2.Mysql存储引擎 2.1 查看命令 2.2 各个引擎简介 2.3 MyISAM和InnoDB 2.4 阿里巴巴.淘宝用哪 ...
- 达梦数据库——DM8安装操作及体系架构介绍
文章目录 一.数据库行业的发展趋势 二.国产数据库的现状 1.自主研发 三.达梦公司的介绍和达梦产品 1.达梦公司的由来 2.达梦公司的产品线 四.DM8的安装及实例的管理 1.软件信息收集 2.硬件 ...
- 大型系统架构设计-阿里淘宝天猫双十一数据库核心技术介绍
目录 零.双十一是什么? 一.2013 双十一数据库指导思想 1.知己知彼,百战不殆 (1)如何做到知己 (2)如何做到知彼 2.平时多流汗,战时少流血 (1)真实环境压测之缓存穿透 (2)MetaQ ...
- 三种数据库架构的介绍
从数据库架构设计的角度,主要有三种,Shared Everything.Shared Disk以及Shared Nothing. 1. Shared Everything 一般指的是单个主机的环境,完 ...
最新文章
- 【青少年编程】【三级】加法出题机
- elasticsearch 第四篇(API约定)
- myeclipse 添加mysql数据库_myeclipse添加数据库
- BZOJ4448:[SCO2015]情报传递
- 2013年度【博客之星评选活动】正在进行中,希望大家支持下,十分感谢!
- 苹果Mac强大的网络流量分析工具:Debookee
- MyBatis学习总结——调用存储过程
- CCNA学习指南 第七章 下载
- dnf服务器字幕乱码win10系统,Windows10下输入法设置 教你避免DNF卡顿
- css设置字体颜色怎么设,css里面怎么设置字体颜色?
- 优化工具MOZ功能详细解说
- 导致网页图片字体模糊的原因
- 大数据思维,到底是什么?
- 护卫神备份mysql_护卫神好备份系统数据库怎么备份?
- 编程语言 vs. 二次元美女
- 标准化互信息NMI计算步骤及其Python实现
- 1135 mysql_Mysql实例mysql中一个普通ERROR 1135 (HY000)错误引发的血案
- 端到端机器学习”中的“端到端”应如何理解
- SAP MM 委外加工
- k8s常见报错解决--持续更新
热门文章
- java 使用mediainfo_音视频文件编码分析软件MediaInfo使用简介
- 德语c2大语言证书的作用,说说德语语言水平级别A1,A2,B1,B2,C1,C2是啥级别
- 阿里邮件API返回 InvalidUser.NotFound. The specified user does not found
- 用qq邮箱,以阿里邮箱的名义发出邮件
- vue+elmentui+ueditor +数学公式 编辑器
- FPGA内部m4k资源使用
- 6759字25个APP测试流程以及资料合集【乐搏TestPro】
- 思科Talos深度解析“WannaCry勒索软件
- PMP通过率暴跌,是否跟新大纲有关?
- PHP的内码转换函数 mb_convert_encoding()