当前位置:   article > 正文

Postgresql体系架构_postgresql架构

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操作后,旧的数据并不会立

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/870367
推荐阅读
相关标签
  

闽ICP备14008679号