Postgresql体系架构

简单理解:
PG实例:内存 + 进程
存储结构:物理存储 + 逻辑存储
PG架构图

内存结构

共享内存

PG启动后,会生成一块共享内存,共享内存主要用作数据块的缓冲区,以便提高读写性能。WAL日志缓冲区和CLOG(Commit log)缓冲区也存在于共享内存中。除此之外,一些全局信息也保存在共享内存中,如进程信息、锁信息、全局统计信息等。

本地内存

后台进程除了访问共享内存外,还会申请分配一些本地内存,以便暂存一些不需要全局存储的数据,这些内存缓冲区主要有:
临时缓冲区:用于访问临时表的本地缓冲区;
Work_mem:内部排序操作和hash表在使用临时磁盘文件之前使用的内存缓冲区;
Maintenance_work_mem:在维护性操作(如VACUUM、CREATE INDEX和ALTER TABLE ADD FOREIGN KEY等)中使用的内存缓冲区。

进程结构

Postmaster

客户端发起连接,PG会启动一个服务进程为这个连接服务。当某个服务进程出现异常,Postmaster主进程会自动完成系统的恢复,恢复过程中会停掉所有的服务进程,然后进行数据一致性恢复,恢复完成之后才开始接收新的连接。

SysLogger

SysLogger进程通过从postmaster进程、所有的服务进程及其他辅助进程收集所有的stderr输出,并将这些输出写入到日志文件中。

BgWriter

BgWriter辅助进程是把共享内存中的脏页写入磁盘上的进程。

WalWriter

WAL就是Write Ahead Log的缩写,中文称为预写式日志,是负责写入Wal日志的进程。概念就是在修改数据之前,必须将这些修改操作记录到磁盘中,后面更新实际数据时,就不需要实时的将数据持久化到文件中了。
WAL日志保存在pg_wal下,每个文件默认是16MB。

PgArch

由于Wal日志会被循环使用,PgArch归档进程会把覆盖前的WAL日志备份出来。

AutoVacuum

在PG中,对表进行delete操作后,旧的数据并不会立

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值