postgresql 数据库面试题及知识梳理
  IE5LYMWlmdvL 2023年12月06日 25 0

PostgreSQL体系结构

本地内存

本地内存是服务器进程独占的内存结构,每个postgresql子进程都会分配一小块相应内存空间,随着连接会话的增加而增加,它不属于实例的一部分

work_mem:用于排序的内存

maintenance_work_mem:用于内部运维工作的内存,如VACUUM垃圾回收、创建和重建索引等等

temp_buffers:用于存储临时表的数据


共享内存

Shared Buffer:

-用于缓存表和索引的数据块 -数据的读写都是直接对BUFFER操作的,若所需的块不再缓存中,则需要从磁盘中读取 -在buffer中被修改过的,但又没有写到磁盘文件中的块被称之为脏块 -由shared_buffers参数控制尺寸

WAL(Write Ahead Log) Buffer:

-预写日志缓存用于缓存增删改等写操作产生的事务日志 -由wal_buffers参数控制尺寸

Clog Buffer:

-Commit Log Buffer是记录事务状态的日志缓存


进程

辅助进程

Backgroup writer:

-工作任务是将shared buffer中的脏数据页写到磁盘文件中 -使用LRU算法进行清理脏页 -平时多在休眠,被激活时工作

Autovacuum launcher/workers:

-自动清理垃圾回收进程 -当参数autovacuum设为on的时候启用自动清理功能 -Launcher为清理的守护进程,每次启动的时候会调用一个或多个worker -Worker是负责真正清理工作的进程,由autovacuum_max_workers参数设定其数量

WAL writer:

-将预写日志写入磁盘文件 -触发时机:WAL BUFFER满了 事务commit时; WAL writer进程到达间歇时间时; -checkpoint发生时;

Checkpoint:

-用于保证数据库的一致性 -它会触发bgwriter和wal writer动作 -拥有多个参数控制其启动的间隔 作用: 一般checkpoint会将某个时间点之前的脏数据全部刷新到磁盘,以实现数据的一致性与完整性。其主要目的是为了缩短崩溃恢复时间 Checkpoint 具体工作:

Statistics Collector:

统计信息的收集进程。收集表和索引的空间信息和元组信息等,甚至是表的访问信息。收集到的信息除了能被优化器使用以外,还有autovaccum也能利用,甚至给数据库管理员作为数据库管理的参考信息.


主从

wal_level= replica

archive_mode=on


Pgpool的服务进程

Pcp进程:向pgpool发送管理命令的

父进程:负责检查数据库健康

Pgpool子进程:接受 发送sql

Work进程:检查延迟情况。

Pgpool logger:记录日志

Health Check:检查pg存活状态进程


多版本机制

1、更新记录会产生新版本,旧版本保留在原地不动,仅在记录头信息中标记删除记录的事务号(xmax)。

2、删除记录,旧版本存储在原地不动。仅在记录头信息中标记删除记录的事务号(xmax)。


补充:

https://blog.51cto.com/u_13482808/8256312

https://blog.51cto.com/u_13482808/8256690

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月06日 0

暂无评论

推荐阅读
IE5LYMWlmdvL