​深入浅出PostgreSQL 架构

2022-08-17 11:42:36 浏览数 (1)

PostgreSQL架构

  • PostgreSQL物理架构是由shared memory(共享内存)、background process(后台进程)和data files(数据文件)组成
  • shared memory(共享内存)是为了database和transaction log提供cache.最核心的是shared buffer和wal buffers
    • shard buffer 是减少磁盘IO而设计的。shard buffer能否加速让大量数据访问、减少大量用户统一时间访问的资源征用
    • wal buffer是临时存储数据库的变化,wal buffer的日志数据定期会flush到wal file

PostgreSQL 进程模型

PostgreSQL进程类型

  • Postmaster Daemon 进程(postmaster process)
  • PostgreSQL Background进程(background process)
  • PostgreSQL Backend进程(backend process)

Postmaster Daemon 进程

  • Postmaster进程是PostgreSQL启动的第一个进程,它的主要工作是负责执行数据库的recovery、初始化shared memory和启动运行PostgreSQL的后台进程。

PostgreSQL Background进程

  • logger :该进程负责把错误日志写入到logfile
  • checkpointer :检查点进程负责检查点发生时候,负责dirty buffer写入文件
  • background writer :写进程负责周期性的dirty buffer写入到文件
  • walwriter :该进程负责把wal buffer数据写入到wal 文件
  • autovacuum launcher :该进程负责清理工作,核心是做三方面的事情
    • 清理表中的已经删除记录
    • 更新表的统计信息以供优化器使用
    • autovacuum launcher使用stats collector后台进程收集统计信息来确定autovacuum候选列表。
  • archiver : 当日志归档时候,该进程负责把WAL 文件拷贝到指定的目录
  • stats collector :statistics collector 负责对数据库,表,函数的调用次数进行统计,通过socket与执行查询的进程进行通信,当执行语句的进程,在执行一条语句时,会在执行前,把上条语句的统计信息通过socket发送给 statistics collector 进程,这样做是因为上个事务已经 commit 或 rollback 了,统计的是事务已完成的数量

PostgreSQL Backend进程

  • 应用通过 TCP 和PostgreSQL建立连接,当客户端连接断开时,服务端的连接消失。允许多个客户端同时连接,连接数由 max_connections 参数控制,默认是 100,如果客户端频繁的和服务端建立连接然后断开。
  • 该进程负责接受来自应用的请求,同时把请求的响应给客户端

0 人点赞