PostgreSQL体系结构概述

PostgreSQL的物理架构由 共享内存、一系列后台进程和数据文件组成

一、共享内存

共享内存是服务器为数据库缓存和事务日志缓存预留的内存缓存空间

Shared Memory=Shared Buffer + WAL Buffer

Shared Buffer的目的是减少磁盘IO ,为了达到这个目的,必须满足以下规则:

当需要快速访问非常大的缓存时(10G、100G等)
如果有很多用户同时使用缓存,需要将内容尽量缩小
频繁访问的磁盘块必须长期放在缓存中
WAL Buffer是用来 临时存储数据库变化的 缓存区域。存储在WAL Buffer中的内容会根据提前定义好的时间点参数要求
写入到磁盘的WAL文件中。

在备份和恢复的场景下,WAL Buffer和WAL文件是极其重要的。

二、进程

##PostgreSQL有四种进程类型

Postmaster (Daemon) Process(主后台驻留进程)
Background Process(后台进程)
Backend Process(后端进程)
Client Process(客户端进程)

1.Postmaster (Daemon) Process(主后台驻留进程)

主后台驻留进程是PostgreSQL启动时第一个启动的进程。启动时,他会执行恢复、初始化共享内存爱你的运行后台进程操作。

正常运行期间,当有客户端发起链接请求时,它还负责创建后端进程。

pstree -p pid 命令查看进程之间的关系,你会发现Postmaster进程是其他所有进程的父进程

2.Background Process(后台进程)

logger 将错误信息写到log日志中

checkpointer 当检查点出现时,将脏内存块写到数据文件

writer 数据文件写进程,周期性的将脏内存块写入文件

wal writer wal写进程,将WAL缓存写入WAL文件

Autovacuum launcher 当自动vacuum被启用时,用来派生autovacuum工作进程。autovacuum进程的作用是在需要时自动对膨胀表执行vacuum操作。

archiver 在归档模式下时,复制WAL文件到特定的路径下。

stats collector 用来收集数据库统计信息,例如会话执行信息统计(使用pg_stat_activity视图)和表使用信息统计(pg_stat_all_tables视图)

3.Backend Process(后端进程)

后端进程用于处理前端用户请求并返回结果。查询运行时需要一些内存结构,就是所谓的本地内存(local memory)。

本地内存涉及的主要参数有:
work_mem:用于排序、位图索引、哈希链接和合并链接操作。默认值为4MB。
maintenance_work_mem:用于vacuum和创建索引操作。默认值为64MB。
temp_buffers:用于临时表。默认值为8MB。

4.Client Process(客户端进程)

客户端进程需要和后端进程配合使用,处理每一个客户链接

三、数据分布及文件

数据库

当initdb()命令执行后,template0 , template1 , 和postgres数据库被创建。

template0和template1数据库是创建用户数据库时使用的模版数据库,他们包含系统元数据表。

initdb()刚完成后,template0和template1数据库中的表是一样的。但是template1数据库可以根据用户需要创建对象。

用户数据库是通过克隆template1数据库来创建的;

表空间

initdb()后马上创建pg_default和pg_global表空间。

建表时如果没有指定特定的表空间,表默认被存在pg_default表空间中。

用于管理整个数据库集群的表默认被存储在pg_global表空间中。

pg_default表空间的物理位置为$PGDATA\base目录。

pg_global表空间的物理位置为$PGDATA\global目录。

一个表空间可以被多个数据库同时使用。此时,每一个数据库都会在表空间路径下创建为一个新的子路径。

创建一个用户表空间会在$PGDATA\pg_tblspc目录下面创建一个软连接,连接到表空间制定的目录位置

每个表有三个数据文件。

一个文件用于存储数据,文件名是表的OID。

一个文件用于管理表的空闲空间,文件名是OID_fsm。

一个文件用于管理表的块是否可见,文件名是OID_vm。

索引没有_vm文件,只有OID和OID_fsm两个文件

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/postgresqlchina/blog/5329288

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。