PG体系架构之进程解读

作者:IT邦德
中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
(Web\java\Python)工作,主要服务于生产制造
现拥有 Oracle 11g  OCP/OCM、
Mysql、Oceanbase(OBCA)认证
分布式TBase\TDSQL数据库、国产达梦数据库以及红帽子认证
从业8年DBA工作,在数据库领域有丰富的经验
B站主播Oracle、Mysql、PG实战课程,请搜索:jeames007

擅长Oracle数据库运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。

在这里插入图片描述

前言

最近有面试的朋友问起PG的进程,也总结以下,希望对大家面试有帮助

1 概述

PG是关系型的数据库,是多进程架构,运行在单个主机上
在这里插入图片描述

a.postgres服务器进程:主服务进程,管理所有的进程
b.backend进程:此进程处理由客户端发起的所有查询
c.background进程:不同的background,处理不同的逻辑
d.walwriter:写在线日志
e.logger:告警日志
f.checkpointer:检查点进程

在这里插入图片描述

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

2 服务器主进程

管理所有的子进程,同时负责数据的开和关闭
pg_ctl start
pg_ctl status
pg_ctl stop

3.backend进程

此进程处理由客户端发起的所有查询
多个客户端同时访问的时候,并发连接的数(100),max_connections
频繁的连接,会对数据库产生负面的性能影响,解决此问题
一般使用池的中间(pgpool-ll、pgbouncer)

4.background writer

后台写进程
把内存当中的数据写到磁盘,主要是提高DML操作的一些性能,
减少频繁访问磁盘,频率高

5.checkpointer

更新检查点信息,更新控制文件,督促background writer落盘,频率低
特定节点时间内,创建了数据库恢复用的检查点

6.walwriter

在线日志进程
内存中修改的数据,先写到在线日志,后面再落盘

7.archiver

归档进程
在线日志循坏写,存在覆盖的情况,此时会把WAL日志归档,
后期可以使用归档进行数据库的恢复
jmedb=# show archive_mode;
archive_mode 
--------------
 off
(1 row)
jmedb=# alter system set archive_mode='on'; 

8.autovacuum launcher

系统自动清理进程
删除的数据,继续保留,同时标记了一个状态,
此时如果没有其他事务再去访问的时候,此时会清理这些旧的数据

9.stats collector

收集统计信息
可以对数据做自动的收集统计信息,用于后期查询优化时的代价估算(cost)
select * from pg_statistic

10.logger

后台写告警日志,默认是开启的
配置文件中去配置 
more $PGDATA/postgresql.conf

logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on

如果觉得文章对你有帮助,点赞、收藏、关注、评论,一键四连支持
您的批评指正是我写作的最大动力!

❤️ 技术交流可以 关注公众号:IT邦德 ❤️

Guess you like

Origin blog.csdn.net/weixin_41645135/article/details/121237565