目录
1、进程架构
2、进程架构图
3、内存架构
4、内存架构图
PostgreSQL 的进程架构采用了一个多进程的设计,这使其能够有效地管理并发连接和资源。以下是 PostgreSQL 的主要进程架构组成部分的详细描述:
1. 主进程(Postmaster)
功能:Postmaster 是 PostgreSQL 的主进程,负责启动和管理所有其他进程。它监听客户端连接请求,并为每个连接创建新的后端进程。
重要性:Postmaster 还负责处理数据库的配置、管理共享内存和控制系统资源。
2. 后端进程(Backend Processes)
功能:每当有客户端连接到 PostgreSQL 时,Postmaster 会为该连接创建一个新的后端进程。后端进程处理客户端请求、执行 SQL 查询并返回结果。
并发性:PostgreSQL 的每个连接都是一个独立的后端进程,这样可以有效地隔离不同连接之间的工作,避免互相干扰。
3. 维护进程(Maintenance Processes)
PostgreSQL 还包含几个重要的维护进程,负责不同的后台任务:
-
检查点进程(Checkpointer):
功能:定期将内存中的数据写入磁盘,以保持数据的一致性并减少恢复时间。
-
归档进程(Archiver):
功能:负责将 WAL(Write-Ahead Logging)日志文件存档,以便在需要时进行恢复。
-
Autovacuum 进程(Autovacuum Daemon):
功能:自动清理死元组(deleted tuples)并回收空间,优化数据库性能。
4. WAL 进程
WAL(Write-Ahead Logging):用于确保数据的持久性和一致性。在进行任何数据更改之前,WAL 记录会被写入日志,确保即使发生系统故障也能恢复数据。
5. 后台工作进程
-
后台工作进程(Background Workers):
功能:用户可以定义自定义的后台工作进程来执行特定任务,如并行查询、数据分析等。
6. 统计信息进程
统计信息进程(Stats Collector):收集关于查询执行时间、锁等待时间等的统计信息,监控和性能调优提供数据支持。
7. 逻辑复制启动器进程
逻辑复制启动器(Logical Replication Launcher):动逻辑复制工作者进程,管理逻辑复制过程中的各种任务。
8. 日志进程
日志进程(logger ):负责将数据库的日志信息记录到日志文件中,便于后续的故障排查和监控。
9. 流复制进程
流复制进程(walsender replication_user streaming ):这是一个用于流复制的进程,它向指定的备份服务器发送 WAL 数据
进程架构图示例
共享内存区域
1. 共享内存 (Shared Memory)
功能:共享内存是 PostgreSQL 的核心内存结构,所有数据库进程都可以访问。这部分内存用于存储:
数据页(data pages)
数据库缓存(shared buffers)
WAL(写前日志)缓冲区
配置:可以通过 shared_buffers 参数进行配置。一般建议设置为总内存的 15% 到 25%。
本地内存区域
1. 工作内存 (Work Memory)
功能:每个数据库会话都有自己的工作内存。它主要用于:
排序操作(sort operations)
哈希表(hash tables)
其他临时数据结构
配置:通过 work_mem 参数进行配置。根据并发连接数,适当调整此参数可以有效提高性能。每个连接的工作内存都是独立的,因此在高并发环境中,设置过大可能导致内存耗尽。
2. 维护工作内存 (Maintenance Work Memory)
功能:用于执行维护任务,例如:
创建索引
VACUUM 操作
ALTER TABLE 等操作
配置:通过 maintenance_work_mem 参数进行配置。可以设置为比工作内存大,以提高维护任务的性能。
3. 临时文件和临时表 (Temporary Files and Temporary Tables)
功能:当工作内存不足以满足操作时,PostgreSQL 会使用临时文件来存储数据。临时表是会话特定的,存储在内存中,直到会话结束。
注意:使用临时文件可能会影响性能,因此应合理配置工作内存以避免过多使用临时文件。
内存架构图示例
公众号内直接回复加群也可以,扫码加群也可以,觉得帖子写的不错,点点关注,点点赞,多多转载,请多多支持。
往期帖子汇总:
数据库维护工具:数据迁移、性能监控、数据修复的全面工具汇总
从零开始学PostgreSQL-工具篇2:碎片回收pg_repack
从零开始学PostgreSQL-工具篇:备份与恢复
从零开始学PostgreSQL (十四):高级功能
从零开始学PostgreSQL (十三):并行查询
从零开始学PostgreSQL (十二):高效批量写入数据库
从零开始学PostgreSQL (十一):并发控制
从零开始学PostgreSQL (十):磁盘使用情况
从零开始学PostgreSQL (九):任务进度报告
从零开始学PostgreSQL (八):监控数据库动态
从零开始学PostgreSQL (七):高可用性、负载平衡和复制
从零开始学PostgreSQL (六):备份和恢复
从零开始学PostgreSQL (五):日常数据库维护任务
从零开始学PostgreSQL (四):数据库角色
从零开始学PostgreSQL (三):索引篇
从零开始学PostgreSQL (二):配置文件
从零开始学PostgreSQL (一):Centos8 RPM安装PostgreSQL16