IT 邦德

看图学PG体系架构,不做知识点的小丑!

PostgreSQL 是客户端/服务器关系数据库管理系统 (RDMS),今天我们就看图体系化的学习下PostgreSQL的体系架构,并且我会和Oracle做一下对比,帮助大家加深印象。

1.总体架构

整体包括内存区域、配置文件、服务进程、磁盘存储,同一台物理服务器中可以运行多套实例,相互之间通过各自所服务的集簇的端口号来区分,很有特点的就是PG使用两级缓存来提高数据库的I/O效率。

Image

2.物理结构

PostgreSQL的数据目录,其中保存着配置文件、数据文件、事务日志和WAL日志等重要文件,所有用户创建的数据文件和初始配置文件都可以在数据目录中找到,在PG中一切皆目录。

Image

3.逻辑结构

在PostgreSQL中,数据库本身也是数据库对象,在逻辑上彼此分离。所有其他数据库对象(如表、索引等)都属于各自的数据库。

Image

上面左边是Oralce的逻辑架构,右边是PG的逻辑架构,很明显了吧!

通过管理schema,允许多个用户使用同一数据库而不相互干扰,可以将数据库  对象组织成易于管理的逻辑组,这么细粒度的管理也是PG的一大特色。

4.内存结构

内存结构分为共享内存、本地内存,类似于Oracle的SGA和PGA。

Image

4.1 本地内存

本地内存区域(Local mermory area):每个后端进程分配供自己使用(用户服务)

Image

4.2 共享内存

共享内存区域 (Shared mermory area):服务器所有的进程使用

Image

shared buffer pool类似于Oracle的database buffer cache。其大小由shared_buffers参数决定。

WAL buffer其大小由wal_buffers参数决定。类似于Oracle的log buffer。

5.进程结构

PostgreSQL数据库的进程可以分为三类:后台进程、后端进程或叫服务器进程、客户端进程或用户进程。

Image

PG是关系型的数据库,是多进程架构,这张图显示了一个PostgreSQL服务器的进程:一个postgres服务器进程,两个backend进程,七个background进程和两个客户端进程。还演示了数据库集群、共享内存和两个客户机进程。

6.双缓存

PostgreSQL数据库使用双缓存写数据,shared_buffer + OS page cache,下图是PG与OS内存交互的过程。

Image

PostgreSQL的双缓存落盘技术通常是指数据库系统中同时使用两级缓存来提高数据库的I/O效率。一级缓存是数据库缓冲区缓存,二级缓存可以是操作系统的文件系统缓存或者SSD缓存。