PG体系结构之进程结构(Process Architecture)

0    1227    8

Tags:

👉 本文共约2746个字,系统预计阅读时间或需11分钟。

进程结构(Process Architecture)

PostgreSQL是一个客户端/服务器类型的关系数据库管理系统,具有多进程架构,运行在单个主机上。

https://www.interdb.jp/pg/pgsql02.html

多个进程协同管理一个数据库集群通常被称为“PostgreSQL server”,它包含以下类型的进程:

  • postgres 服务器进程:postgres服务器进程是所有与数据库集群管理相关进程的父进程。
  • backend 进程: 每个backend进程处理由连接的客户机发出的所有查询和语句。
  • background 进程: 不同的background 进程执行不同特性的进程(例如,VACUUM进程和CHECKPOINT进程),用于数据库管理。
  • replication associated 进程: 与复制相关的进程负责执行流复制。
  • background worker 进程:background worker process进程可以执行用户实现的任何处理。

PostgreSQL进程架构示例

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

Postgres服务器进程

如上所述,postgres服务器进程是PostgreSQL服务器中所有进程的父进程。在早期的版本中,它被称为postmaster(postmaster is a deprecated alias of postgres.)。postgres服务器进程是整个数据库实例的总控进程,负责启动关闭该数据库实例。
当某个服务出现错误的时候,Postmaster主进程会自动完成系统的修复,修复过程中会停掉所有的服务进程,然后进行数据库数据的一致性恢复,等待恢复完成后,数据库又可以接受新的连接了.
PG9.5之前的postmaster进程实际上就是PG9.5及其以后版本中第一个启动的postgres进程,该进程的ospid(操作系统进程的进程号)在$PGDATA/下的postmaster.pid中有记录.

通过执行带有start选项的pg_ctl程序,postgres服务器进程将启动。然后,它在内存中分配一个共享内存区域,启动各种background进程,必要时启动与复制相关的进程和background workers进程,并等待客户机的连接请求。每当收到来自客户机的连接请求时,它就启动backend进程。(然后,启动的backend进程处理连接的客户端发出的所有查询。)

Backend 进程

backend进程也称为postgres,由postgres服务器进程启动,并处理由一个连接的客户机发出的所有查询。它通过一个TCP连接与客户机通信,并在客户机断开连接时终止。

因为它只允许操作一个数据库,所以在连接到PostgreSQL服务器时,必须明确指定想要使用的数据库。

允许多个客户端同时连接;配置参数max_connections控制客户机的最大数量(默认为100)。

如果许多客户端(如WEB应用程序)频繁地重复连接和断开与PostgreSQL服务器的连接,这会增加建立连接和创建后端进程的成本,因为PostgreSQL没有实现本机连接池特性。这种情况会对数据库服务器的性能产生负面影响。为了处理这种情况,通常使用池中间件(pgbouncer或pgpool-II)。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复