postgresql-进程架构

27 阅读2分钟

简介

postgresql是是一个多进程架构的C/S模式关系型数据库,PG数据的进程大致可以分为如下几类:

  1. postgresql server process: 所有进程的父进程
  2. backend process: 每个客户端对应一个backend process,一个backend process只能连接到一个datbase
  3. backgroud process: 后台运行的进程,比如脏数据刷盘的write process/自动删除的autovacuum process/做检查点的check point进程...
  4. replication process: 处理流复制的进程
  5. backgroud worker process(user-define): 运行用户自定义的一些进程 Screenshot 2025-02-26 at 22.09.13.png

postgresql server process

当PG启动时, 会启动postgresql server process, 然后他会启动一个shared memory, 同时启动background process,replication process(如果有)和background worker process, 等待客户端的连接

backend process

通过tcp协议和客户端进行连接,一个backend只能连接一个database,PG允许多个客户端同时连接到数据库,默认是100个,通过max_connection参数控制。PG没有连接池,可以通过pgpool等插件进行优化

backgroud process

  1. Postmaster (主进程)

    • 启动和管理所有其他后台进程。
    • 负责接收客户端连接请求并分配子进程来处理这些请求。
  2. WAL Writer

    • 负责将事务日志(WAL,Write-Ahead Logging)从内存写入磁盘。
    • 确保数据的持久性和一致性。
  3. Checkpointer

    • 定期将内存中的数据页刷新到磁盘,以减少系统崩溃时的数据丢失。
    • 负责创建检查点,确保数据库在恢复时能快速启动。
  4. Background Writer

    • 负责将脏页(修改过但尚未写入磁盘的页)写回磁盘。
    • 通过预写数据来减少检查点的负担,提高系统性能。
  5. Autovacuum Daemon

    • 自动执行清理和维护任务,如清理死元组(dead tuples)和更新统计信息。
    • 有助于保持数据库性能和防止膨胀。
  6. Stats Collector

    • 收集数据库的运行统计信息(如连接数、查询性能等)。
    • 提供用于监控和优化数据库性能的数据。
  7. Logical Replication Launcher

    • 管理逻辑复制进程,支持数据的逻辑复制和订阅。
    • 允许在不同数据库之间同步数据。
  8. Worker Processes

    • 用于执行并行查询和其他后台任务。
    • 提高查询性能和数据库的并发处理能力。