源内容(英文)
PostgreSQL(通常简称为 Postgres)是一种先进的开源 对象关系数据库管理系统(ORDBMS)。它凭借其强大的功能集、可扩展性以及对 SQL 标准的兼容性而脱颖而出。作为最早的数据库系统之一 POSTGRES 的继任者,PostgreSQL 已经演变成全球范围内各种应用程序和开发者的首选。
PostgreSQL 的系统架构
PostgreSQL 的架构是围绕客户端-服务器模型构建的,这对于处理多个数据库功能(如管理连接、操作以及静态和动态资产)至关重要。简而言之,一个 PostgreSQL 服务包含 2 个进程:
1. 服务端进程
这就是管理连接、操作以及静态和动态资产的 "Postgres" 应用程序。它高效地处理多项任务,包括会话管理、查询处理和事务管理。此外,它通过维护锁和写入事务日志来确保数据完整性和并发控制。该进程在管理数据库连接和执行从客户端应用程序接收到的查询方面起着关键作用,对于系统的稳健性能至关重要。
2. 客户端进程(前端应用程序)
这些是用户用来与数据库交互的应用程序。它通常具有简单的用户界面,通常通过 API 在用户和数据库之间进行通信。
当用户在 PostgreSQL 上运行查询时,客户端应用程序可以连接到 PostgreSQL 服务器,并通过 PostgreSQL 支持的众多数据库客户端应用程序程序接口(如 JDBC、Perl DBD、ODBC 等)之一提交查询,这些接口有助于提供客户端库。在客户端进程中,客户端应用程序与客户端应用程序库之间的通信是借助库 API 进行的,如下图所示:
!imagePostgreSQL System Architecture
PostgreSQL 的核心组件
1. Postmaster 守护进程
PostgreSQL 的系统架构基于 每事务进程模型(客户端/服务器模型)。一个运行的 PostgreSQL 站点由 Postmaster 管理,它是一个中央协调进程。它也被称为服务端进程。
Postmaster 守护进程负责:
- 初始化服务器
- 关闭服务器
- 处理来自新客户端的连接请求
- 执行恢复
- 运行后台进程
2. 共享内存
共享内存是多个程序同时访问的内存,旨在提供快速、高效的结果并减少冗余。这是为数据库缓存和事务日志缓存保留的内存。在 PostgreSQL 中,使用了共享磁盘缓冲区和共享表,其工作原理解释如下。
共享磁盘缓冲区: 共享磁盘缓冲区的目的是最小化磁盘输入/输出。如果不使用它,磁盘输入/输出将占用更多时间,从而导致冗余和系统低效。使用共享缓冲区的优点是:
- 减少时间
- 可以轻松访问非常大量的数据
- 当多个用户同时访问时最大限度地减少争用
共享表: 这种方法涉及使用同一组表来托管多个客户端数据。使用这种方法的主要优点是:
- 最低的硬件成本
- 最低的备份成本
- 它允许在单个数据库中处理大数据。
3. 后端进程
Postmaster 负责处理初始的客户端连接。为此,它作为一个已知端口不断监听新连接。在执行初始化过程(例如用户身份验证)后,postmaster 将生成一个新的后端服务器进程来处理新客户端。客户端仅与后端服务器进程交互,例如提交查询和接收查询结果。这将表明 PostgreSQL 实际上使用的是每事务进程模型。
后端服务器负责通过执行特定操作来执行客户端提交的查询。每个后端服务器一次只处理一个查询。由于多个客户端同时连接到系统,因此有多个后端服务器并发执行查询。后端服务器从位于共享内存中的主内存缓冲池访问数据。
之后,获得的结果由后端进程提供给客户端进程。
此进程将 WAL 数据写入并刷新到 WAL 缓冲区
—
此进程也称为记录器。它将…