开源关系数据库——PostgreSQL

时间:2024-04-02 17:54:06

一、什么是PostgreSQL

开源关系数据库——PostgreSQL

PostgreSQL是一个功能强大的开源对象-关系数据库系统,使用和扩展了SQL语言,并结合了许多安全存储和扩展最复杂数据工作负载的功能。

1、PostgreSQL架构

开源关系数据库——PostgreSQL

PostgreSQL采用客户端/服务器的架构提供服务,整个系统由:连接管理系统、编译执行系统、存储管理系统、事务系统、系统表五部分组成。

连接管理系统:由系统控制器负责接受外部操作请求,然后对请求进行预处理与分发;

编译执行系统:由查询编译器负责操作请求在数据库中的分析处理和转化工作,查询执行器实现物理存储介质中数据的操作;

存储管理系统:由索引管理器、内存管理器、外存管理器组成,负责存储和管理物理数据,提供对编译查询系统的支持;

事务系统:由事务管理器,日志管理器,并发控制,锁管理器组成,其中日志管理器和事务管理器完成对操作请求的事务一致性支持,锁管理器和并发控制提供对并发访问数据一致性支持。

系统表:负责管理PostgreSQL数据库的元数据信息,包括数据库对象信息和数据库管理控制信息。

开源关系数据库——PostgreSQL

Postmaster(主进程):管理后端的常驻进程,PG数据库实例的总控进程,负责启动和关闭数据库实例。

Postgres(子进程):会话服务进程,接受前端查询请求,然后对数据库进行检索,最后把结果返回;同时也会对数据库进行更新,更新的数据也会记录在事务日志(WAL),实现灾难恢复。

辅助进程:1)BgWrite进程:把共享内存中的脏页写到磁盘上的进程,提供插入、更新和删除数据的性能;2)WALWrite进程:在修改数据之前把修改操作记录到磁盘中,以便后面更新实时数据时就不需要数据持久化到文件中,同时为灾难恢复准备;3)PgArch进程:对数据进行一次全量备份后,该进程将备份时间点之后的WAL日志通过归档进行备份,使用全量备份加WAL日志,实现数据库任意时间的访问;4)AutoVacuum进程:PG数据库对表进行的删除/更新后,并不会立即删除/更新,而是新生成一行数据,在没有并非发其他事务读到这些数据时,该进程进行清除;5)PgStat进程:数据的统计收集工作,主要用于查询优化时的代价估算。6)CheckPoint进程:检查点是系统设置的事务序列点,设置检查点保证检查点前的日志信息刷到磁盘中。

2、MySQL与PG对比

特性

PG

MySQL

实现语言

C

C、C++

存储引擎

InnoDB

Multiple(插件形式)

数据类型

Array、IP、自定义等

标准SQL类型

并行模式

多进程

多线程

JSON / NOSQL

支持 / 支持

支持 / 不支持

表达式/位图索引

支持

不支持