暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

​深入浅出PostgreSQL 架构

410
作者时间QQ技术交流群
perrynzhou@gmail.com2021/08/05672152841

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,如果客户端频繁的和服务端建立连接然后断开。

  • 该进程负责接受来自应用的请求,同时把请求的响应给客户端


文章转载自存储内核技术交流,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论