作者 | 时间 | QQ技术交流群 |
---|---|---|
perrynzhou@gmail.com | 2021/08/05 | 672152841 |
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,如果客户端频繁的和服务端建立连接然后断开。
该进程负责接受来自应用的请求,同时把请求的响应给客户端