PostgreSQL的核心架构

注意 本人的博客都迁移到本人自己搭建的博客地址,通过此处可查看。

应用程序的访问接口

1. 访问接口总体图

进程及内存结构

1. 进程和内存结构图

  • 主进程:Postmaster进程

  • 辅助进程:SysLogger(系统日志)进程、BgWriter(后台写)进程、WALWrite(预写式日志)进程、PgArch(归档)进程、AutoVacuum(系统自动清理)进程、PgStat(统计收集)进程、CheckPoint()进程。

2. 主进程 Postmaster

是整个数据库实例的总控进程,负责启动和关闭该数据库实例。

3. Syslogger(系统日志)进程

需要在Postgres.conflogging_collection设置为on,此时主进程才会启动Syslogger辅助进程。

4. BgWriter(后台)进程

把共享内存中的脏页写到磁盘上的进程。主要是为了提高插入、更新和删除数据的性能。

5. WalWrite(预写式日志)进程

WAL:Write Ahead Log(预写式日志)

在修改数据之前把修改操作记录到磁盘中,以便后面更新实时数据时就不需要数据持久化到文件中。

6. PgArch(归档)进程

WAL日志会被循环使用,PgArch在归档前会把WAL日志备份出来。通过PITY(Point in Time Recovery)技术,可以对数据库进行一次全量备份后,该技术将备份时间点之后的WAL日志通过归档进行备份,使用数据库的全量备份再加上后面产生的WAL日志,即可把数据库向前推到全量备份后的任意一个时间点。

7. AutoVacuum(自动清理)进程

在PostgreSQL数据库中,对表进行DELETE操作后,旧的数据并不会立即被删除,并且,在更新数据时,也并不会在旧的数据上做更新,而是新生成一行数据。旧的数据只是被标识为删除状态,只有在没有并发的其他事务读到这些就数据时,它们才会被清楚。这个清除工作就有AutoVacuum进程完成。

8. PgStat(统计数据收集)进程

做数据的统计收集工作。主要用于查询优化时的代价估算,包括一个表和索引进行了多少次的插入、更新、删除操作,磁盘块读写的次数、行的读次数。pg_statistic中存储了PgStat收集的各类信息。

9. 共享内存

PostgreSQL启动后,会生成一块共享内存,用于做数据块的缓冲区,以便提高读写性能。WAL日志缓冲区和Clog缓冲区也存在共享内存中,除此之外还有全局信息比如进程、锁、全局统计等信息也保存在共享内存中。

使用"mmap()“方式的共享内存,使用此内存的好处是不在需要配置"System V"共享内存的参数"kernel.shmmax"和"kernel.shmall”,就能使用较大的共享内存。

10. 本地内存

非全局存储的数据都存在本地内存中,主要包括:

  • 临时缓冲区:用于访问临时表的缓冲区

  • work_mem: 内部排序操作和Hash表在使用临时操作文件之前使用的存储缓冲区。

  • manintance_work_mem: 在维护操作比如:VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN Key等中使用的内存缓冲区。

PostgreSQL的核心架构相关推荐

  1. PostgreSQL修炼之道之PostgreSQL的核心架构(十一)

    目录 第七章 PostgreSQL的核心架构 7.1 应用程序的访问 7.1.1 访问接口总体图 7.2 进程及内存结构 7.2.1 进程和内存架构图 7.2.2 主进程Postmater 7.2.3 ...

  2. 干货帖 | TDSQL-A核心架构揭秘

    5月18日,腾讯云首款分布式分析型数据库TDSQL-A正式发布公有云版本. TDSQL-A作为领先的分析型数据库,是腾讯首款分布式分析型数据库,采用全并行无共享架构,具有自研列式存储引擎,支持行列混合 ...

  3. 技术小白成长之路 - 谷歌云端 GCP Cloud Engineering - 第一篇 - 核心架构 Core Infrastructure

    谷歌云端 GCP Cloud Engineering Certificate - 第一篇 - 核心架构 Core Infrastructure 谷歌云端平台GCP简介 1. 谷歌云端平台GCP资源层次 ...

  4. 英伟达十年力作:新一代光线追踪显卡 Quadro RTX及核心架构Turing,可支持AI运算...

    作者 | 琥珀 出品 | AI科技大本营(公众号ID:rgznai100) 北京时间 8 月 14 日清晨,英伟达(NVIDIA)CEO 黄仁勋准时出席在温哥华举办的 SIGGRAPH 2018 计算 ...

  5. Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解

    编者按:HDFS和MapReduce是Hadoop的两大核心,除此之外Hbase.Hive这两个核心工具也随着Hadoop发展变得越来越重要.本文作者张震的博文<Thinking in BigD ...

  6. javaweb k8s_K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程...

    K8S微服务核心架构学习指南 ASP.NET Core微服务基于K8S 架构师必备Kubernetes教程 课程内容是关于Kubernetes微服务架构学习课程,基于K8S开展ASP.NET核心进行微 ...

  7. mysql核心数据库_从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程...

    从MySQL基础进军MySQL核心架构 178集MySQL数据库核心基础视频教程 MySQL基础案例教程 课程目录 (1) 01MySQL基础_课程引入.avi (2) 02MySQL基础_为什么学习 ...

  8. 【LiveVideoStack线上分享】— FreeSWITCH核心架构与流程控制

    FreeSWITCH是一个开源的软交换系统,支持PSTN通话.支持WebRTC.支持基于IP和5G的视频通话和视频会议,并提供开放的API. 今晚7:30 ,我们邀请到了FreeSWITCH 中文社区 ...

  9. 从校招生到核心架构师,支付宝研究员李俊奎谈如何成为一名优秀的程序员

    校招进入支付宝,11年时间,从一线工程师成长为支付宝安全核心架构师,这个技术牛人就是李俊奎. 李俊奎一直聚焦风控平台的技术和架构发展,并着手搭建了中国第一家云上的商业银行--网商银行. 在2016年双 ...

最新文章

  1. Android架构篇-5 CI/CD(持续集成、持续交付、持续部署)
  2. C++ Primer 5th笔记(chap 19 特殊工具与技术)typeid
  3. libevent 1.4.13 / 源代码文件组织
  4. Ubuntu12.04编译Android4.0.1源码全过程-----附wubi安装ubuntu编译android源码硬盘空间不够的问题解决
  5. 畅玩4x 刷linux,荣耀4x如何root
  6. C#Const与static readonly的区别
  7. 计算机网络军训口号,霸气押韵的16字军训口号(精选50句)
  8. Latex数学公式表
  9. 批量导入手机通讯录_大批量手机号导入通讯录软件
  10. 郭天祥的10天学会51单片机_第九节
  11. “降维打击”到底什么意思?
  12. 惊!12306官网又现用户信息泄露?
  13. PHPStorm设置Ctrl+滚轮调整字体大小
  14. 隐私保护 举例_完美保护隐私
  15. linux批处理模式,巧用linux-top的批处理模式
  16. matlab中elevation函数功能,Matlab的Demcmap的Python等价物(elevation+/appropriate colormap)...
  17. 8个好玩又实用的神奇网站,帮你打开新世界大门!
  18. 微盛创始人杨明:企业微信将成为中国saas的新土壤
  19. 免费的Windows Mobile应用软件商店 -- OpnMarket
  20. 创意清新小学生班干竞选精美PPT模板共享

热门文章

  1. 当导用模块与包的import与from的问题(模块与包的调用)
  2. MySQL的timestamp字段可以使用的范围是多少
  3. 【转载】 Asp.net Mvc 3当然也不会例
  4. Ext 1.0 简要说明 类继承关系图
  5. Tomcat配置和Web应用程序开发
  6. Linux基础学习导图
  7. linux/shell相关知识点
  8. java 分布式rpc框架_分布式RPC框架Apache Dubbo(一)
  9. 架构师一般做到多少岁_软件测试可以做到多大岁数?
  10. Colemak布局的实现 Window+Linux+Android