PostgreSQL的核心进程
基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777
PostgreSQL 采用多进程架构,各司其职协同工作。以下是主要核心进程及其功能的深度解析:
一 主控进程 (Postmaster)
核心职责:
- 数据库实例的总控进程
- 监听客户端连接请求(默认5432端口)
- 派生和管理所有子进程
- 管理共享内存区域
关键特性:
二 后端服务进程 (Backend Processes)
核心职责:
- 每个客户端连接对应一个独立进程
- 执行SQL查询并返回结果
- 管理事务生命周期
重要参数:
max_connections = 100 -- 最大连接数
superuser_reserved_connections = 3 -- 保留连接数
三 持久化进程组
3.1 预写式日志进程 (WAL Writer)
- 定期将WAL缓冲区写入磁盘
- 确保事务的持久性(ACID中的D)
- 关键参数:
wal_writer_delay
(默认200ms)
3.2 检查点进程 (Checkpointer)
- 定期创建检查点
- 减少崩溃恢复时间
- 关键参数:
checkpoint_timeout
(默认5分钟)
3.3 后台写入进程 (BgWriter)
- 将脏页从共享缓冲区写入磁盘
- 平滑I/O负载
- 关键参数:
bgwriter_delay
(默认200ms)
四 维护进程组
4.1 自动清理进程 (AutoVacuum)
- 参数控制:
autovacuum = on autovacuum_max_workers = 3
4.2 统计信息收集器 (Stats Collector)
- 收集表和索引的访问统计信息
- 为查询优化器提供数据
- 关键视图:
pg_stat_*
系列
五 复制相关进程
5.1 WAL发送/接收进程
- WalSender:主库发送WAL日志
- WalReceiver:备库接收WAL日志
- 启动器进程:备库上的启动进程
5.2 日志应用进程 (Startup)
- 备库专用进程
- 重放接收到的WAL日志
- 关键参数:
recovery_min_apply_delay
六 特殊功能进程
进程名称 | 功能描述 | 触发条件 |
---|---|---|
Logger | 日志收集与管理 | 日志相关参数启用时 |
Archiver | WAL归档 | archive_mode=on |
Logical Worker | 逻辑复制工作进程 | 创建逻辑复制订阅时 |
Parallel Worker | 并行查询工作进程 | 执行并行查询时 |
七 进程监控实战
7.1 查看所有进程
ps aux | grep postgres | grep -v grep
7.2 关键系统视图
-- 活动进程监控
SELECT pid, usename, application_name, state
FROM pg_stat_activity;
-- 复制状态监控
SELECT pid, client_addr, state, sync_state
FROM pg_stat_replication;
-- 自动清理监控
SELECT pid, datname, relname, phase
FROM pg_stat_progress_vacuum;
八 生产环境优化建议
进程资源配置
-- 连接相关
ALTER SYSTEM SET max_connections = 300;
ALTER SYSTEM SET work_mem = '8MB';
-- WAL相关
ALTER SYSTEM SET wal_buffers = '16MB';
ALTER SYSTEM SET checkpoint_completion_target = 0.9;
-- 自动清理
ALTER SYSTEM SET autovacuum_vacuum_cost_limit = 2000;
高可用配置
-- 主库
ALTER SYSTEM SET wal_level = 'replica';
ALTER SYSTEM SET synchronous_standby_names = '*';
-- 备库
ALTER SYSTEM SET hot_standby = 'on';
ALTER SYSTEM SET primary_conninfo = 'host=master port=5432';
谨记:心存敬畏,行有所止。