Potgres(常驻进程)

管理后端的常驻进程,也称为’postmaster’。其默认监听UNIX Domain Socket和TCP/IP(Windows等,一部分的平台只监听tcp/ip)的5432端口,等待来自前端的的连接处理。监听的端口号可以在PostgreSQL的设置文件postgresql.conf里面可以改。

一旦有前端连接过来,postgres会通过fork(2)生成子进程。没有Fork(2)的windows平台的话,则利用createProcess()生成新的进程。这种情形的话,和fork(2)不同的是,父进程的数据不会被继承过来,所以需要利用共享内存把父进程的数据继承过来。

postmaster(守护进程)主要职责有:

1. 数据库的启停

2. 监听客户端连接

3. 为每个客户端连接fork单独的postgres服务进程

4. 当postgres服务进程出错时进行修复

5. 管理数据文件

6. 管理与数据库运行相关的辅助进程

Postgres(子进程)

子进程根据pg_hba.conf定义的安全策略来判断是否允许进行连接,根据策略,会拒绝某些特定的IP及网络,或者也可以只允许某些特定的用户或者对某些数据库进行连接。

Postgres会接受前端过来的查询,然后对数据库进行检索,最好把结果返回,有时也会对数据库进行更新。更新的数据同时还会记录在事务日志里面(PostgreSQL称为WAL日志),这个主要是当停电的时候,服务器当机,重新启动的时候进行恢复处理的时候使用的。另外,把日志归档保存起来,可在需要进行恢复的时候使用。在PostgreSQL 9.0以后,通过把WAL日志传送其他的postgreSQL,可以实时得进行数据库复制,这就是所谓的‘数据库复制’功能。

其他的进程

Postgres之外还有一些辅助的进程。这些进程都是由常驻postgres启动的进程。

Writer process

Writer process在适当的时间点把共享内存上的缓存写往磁盘。通过这个进程,可以防止在检查点的时候(checkpoint),大量的往磁盘写而导致性能恶化,使得服务器可以保持比较稳定的性能。Background writer起来以后就一直常驻内存,但是并非一直在工作,它会在工作一段时间后进行休眠,休眠的时间间隔通过postgresql.conf里面的参数bgwriter_delay设置,默认是200微秒。

这个进程的另外一个重要的功能是定期执行检查点(checkpoint)。

检查点的时候,会把共享内存上的缓存内容往数据库文件写,使得内存和文件的状态一致。通过这样,可以在系统崩溃的时候可以缩短从WAL恢复的时间,另外也可以防止WAL无限的增长。 可以通过postgresql.conf的checkpoint_segments、checkpoint_timeout指定执行检查点的时间间隔。

WAL writer process

WAL writer process把共享内存上的WAL缓存在适当的时间点往磁盘写,通过这样,可以减轻后端进程在写自己的WAL缓存时的压力,提高性能。另外,非同步提交设为true的时候,可以保证在一定的时间间隔内,把WAL缓存上的内容写入WAL日志文件。

Archive process

Archive process把WAL日志转移到归档日志里。如果保存了基础备份以及归档日志,即使实在磁盘完全损坏的时候,也可以回复数据库到最新的状态。

stats collector process

统计信息的收集进程。收集好统计表的访问次数,磁盘的访问次数等信息。收集到的信息除了能被autovaccum利用,还可以给其他数据库管理员作为数据库管理的参考信息。

Logger process

把postgresql的活动状态写到日志信息文件(并非事务日志),在指定的时间间隔里面,对日志文件进行rotate.

Autovacuum启动进程

autovacuum launcher process是依赖于postmaster间接启动vacuum进程。而其自身是不直接启动自动vacuum进程的。通过这样可以提高系统的可靠性。

自动vacuum进程

autovacuum worker process进程实际执行vacuum的任务。有时候会同时启动多个vacuum进程。

wal sender / wal receiver

wal sender 进程和wal receiver进程是实现postgresql复制(streaming replication)的进程。Wal sender进程通过网络传送WAL日志,而其他PostgreSQL实例的wal receiver进程则接收相应的日志。Wal receiver进程的宿主PostgreSQL(也称为Standby)接受到WAL日志后,在自身的数据库上还原,生成一个和发送端的PostgreSQL(也称为Master)完全一样的数据库。

postgresql 客户端_Postgresql体系结构相关推荐

  1. PostgreSQL实战之体系结构

    目录 PostgreSQL实战之体系结构 前言 1 逻辑和物理存储结构 1.1 逻辑存储结构 1.2 物理存储结构 2 进程结构 2.1 守护进程与服务进程 2.2 辅助进程 3 内存结构 3.1 本 ...

  2. Postico —— OS X 上的免费 PostgreSQL 客户端

    Postico 是 OS X 下的一个 PostgreSQL 客户端管理工具.要求 OS X 10.8 或者更新版本. 文章转载自 开源中国社区 [http://www.oschina.net]

  3. postgresql客户端命令之口令文件

    postgresql客户端命令之口令文件: 在给出其它PostgreSQL客户端命令之前,我们需要先介绍一下PostgreSQL中的口令文件.之所以在这里提前说明该文件,是因为我们在后面的示例代码中会 ...

  4. Mac超好用的PostgreSQL客户端:Postico Mac下载

    Postico是一款Mac平台上的图形化PostgreSQL客户端工具,它提供了一个直观.简单易用的用户界面,方便开发人员与PostgreSQL数据库进行交互. 使用Postico,您可以轻松地连接到 ...

  5. PostgreSQL 客户端乱码问题

    关于客户端和服务器端的乱码问题, POSTGRESQL字符集问题总结 总结的很详细, 特别棒. 这里让我头痛了很久的问题在于 终端 上字符编码的问题, 由于我的mbp上的 iterm2 的默认编码为 ...

  6. postgresql 客户端_一款功能强大的数据库客户端:DataGrip

    前言 在我们日常的程序开发中,很大一部分时间是在与数据库打交道. 查数据,导数据,检查SQL执行计划,优化SQL等,是我们数据库开发工作的重要组成部分,而且很多时候我们会使用到多款数据库,如Oracl ...

  7. PostgreSQL客户端psql常用命令

    使用psql客户端访问数据库, 列出了psql常用命令和参数. 常用命令 -- 使用指定用户和IP端口登陆 psql -h 10.43.159.11 -p 5432 -U postgres -W -- ...

  8. Postgresql 客户端 psql 的使用

    psql命令行 获取命令行帮助 Usage: General options: Input and output options: Output format options: Connection ...

  9. postgresql入门_PostgreSQL教程:PostgreSQL 10入门

    postgresql入门 多年来,PostgreSQL一直是企业软件和开放源代码中保存最好的秘密之一-功能强大,健壮且经过专家维护的关系数据库. MySQL可能更广为人知,但PostgreSQL提供了 ...

最新文章

  1. 一篇文章教你学会使用SpringBoot实现文件上传和下载
  2. Thrift异步IO服务器源码分析
  3. python多线程并行编程_Python并行编程(二):基于线程的并行
  4. 底层实现红黑树_图解:红黑树
  5. 多元样条函数及其应用_B样条算法(B-spline)
  6. Android开发笔记(二)
  7. RN组件使用注意事项
  8. node.js打开指定浏览器的四种方式
  9. word20161219
  10. matlab影像阿伯斯投影,D3.js 世界地图(一)投影方式
  11. NetMeeting不能共享桌面的解决办法
  12. 华为前端社招OD面试(已拿offer)
  13. 计算机英语ppt答辩,急求英语答辩PPT范文
  14. 用winpcap实现局域网DNS欺骗之一(基础知识)
  15. Logback日志名和日志内容配置增加ip等信息
  16. 涉密计算机分区保护,VeraCrypt - 创建加密分区保护计算机上需要保密的文件
  17. 操作系统2022简答8选4
  18. 面向对象三大特征之继承
  19. 灵山奇缘服务器维护,灵山奇缘 12月21日每周例行维护公告
  20. ie10 11 css兼容性问题,学习一下IE10和IE11的CSS Hack

热门文章

  1. python的setup如何安装_如何安装python的setuptool
  2. python定义x_Python 定义函数(示例代码)
  3. java启动时执行_java怎么实现项目启动时执行指定方法
  4. 哪些计算机p玩游戏,有了这个神器,你的电脑玩什么游戏都带得动
  5. git提交屏蔽某java类_git 删除某次指定的提交
  6. 深入理解javascript原型和闭包(17)——补this
  7. 再见 Win10系统!下一代操作系统要来了!!
  8. 数据分析、机器学习必读书,李航《统计学习方法》发布算法推导视频啦!(附作业讲解)...
  9. GitHub 3W 星,冲击热榜!超实用技术面试手册,看这篇就够了
  10. 关于求职简历的碎碎念。