PostgreSQL的核心架构

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等中使用的内存缓冲区。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462907.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 下的多线程下载工具

2019独角兽企业重金招聘Python工程师标准>>> 最先用的是 Axel(http://axel.alioth.debian.org/),功能还可以,不过下载文件最多支持到 2GB,再大的文件就不能下载了,真变态! aget&…

Launcher结构之home screen

今天刚刚知道如果你的Eclipse里面的工程指向服务器里面的源码记住千万不能在Eclipse里编译~~会在服务器上的源码里多处很多的中间件这样make不了只能清除那些中间件才能编译比较麻烦 Home screen可以说是一个手机的最重要应用,就像一个门户网站的首页,直…

分布式事务2PC、3PC模型

工作中使用最多的是本地事务,但是在对单一项目拆分为 SOA、微服务之后,就会牵扯出分布式事务场景 文章以分布式事务为主线展开说明,并且针对 2PC、3PC 算法进行详细的讲解,最后通过一个 Demo 来更深入掌握分布式事务,…

Python学习之路——装饰器

开放封闭原则:不改变调用方式与源代码上增加功能 1.不能修改被装饰对象(函数)的源代码(封闭) 2.不能更改被修饰对象(函数)的调用方式,且能达到增加功能的效果(开放)View Code装饰器 # 把要被装饰的函数作为…

通断时间面积法

背景: 来 源: 通断时间面积法是入选《供热计量技术规程》JGJ173-2009的一种热量分摊计量方法实现分户计量的一种计量方法。由清华大学建筑节能研究中心江亿院士提出。 简 称 ( 俗称 ):(1)“时温法”(2&a…

win8 关于Adobe CS6系列软件Patch覆盖失败的问题(Photoshop CS6、Adobe Illustrator CS6、Adobe Fireworks CS6)...

我在Adobe文件夹下安装了Photoshop CS6和 Adobe Illustrator CS6,结果当我为AI覆盖Path文件后,我发现PS和AI全部都打不开了。反复覆盖还是没用。 不过很奇怪fireworks Cs6能用。FW我没有跟PS、AI装在同一个文件夹下。 我想难道是安装目录的问题&#xff…

《集体智慧编程》——第一章导读

为什么80%的码农都做不了架构师?>>> 什么是集体智慧 其含义是指:为了长早新的想法,而将一群人的行为、偏好或思想组合在一起。 完成这项工作的一种最为基础的方法,便是使用调查问卷或普查。从一大群人中搜集的答案可…

在Mono 2.8上部署ASP.NET MVC 2

Mono 2.8发布:C#4.0和更好的性能,我们知道Mono 2.8对ASP.NET MVC 2的完全支持,下面我们就来测试下在Mono 2.8上部署ASP.NET MVC 2应用程序。我的环境是Opensuse 11.3,通过以下命令部署好Mono 2.8的开发环境,之所以说是开发环境是同…

SRV记录注册不成功的可能的原因

1.1.1 SRV记录注册不成功的可能的原因 默认情况,安装完活动目录就会DNS中的SRV记录就注册成功了,如果您在域控制器上重启Netlogon服务,有可能还是不能注册SRV记录到DNS服务器上,以下是总结的需要检查的几点。 DNS区域名字是否正确…

ABAP很厉害是怎么一种体验?

知乎上偶然看到这个问题,觉得很有意思,我也来回答一发。 我本科和研究生学的是计算机专业,做项目用C/C,研究生三年项目的代码量大概在三到四万行左右。2007年大学毕业加入SAP成都研究院一直工作到现在,工作中用的最熟练…

当前读与快照读

概念 快照读 读取的是记录数据的可见版本(可能是过期的数据),不用加锁 当前读 读取的是记录数据的最新版本,并且当前读返回的记录都会加上锁,保证其他事务不会再并发的修改这条记录   概念说的比较虚,也不…

随手笔记

import turtleturtle.bgcolor("red")turtle.fillcolor("yellow")turtle.color(yellow)turtle.speed(10)#主星turtle.begin_fill()turtle.up()turtle.goto(-600,220) turtle.down()for i in range (5): turtle.forward(150)turtle.right(144)turtle.end_…

详解AST抽象语法树

浅谈 AST 先来看一下把一个简单的函数转换成AST之后的样子。 // 简单函数 function square(n) {return n * n; }// 转换后的AST {type: "FunctionDeclaration",id: {type: "Identifier",name: "square"},params: [{type: "Identifier&quo…

rbac 权限分配, 基于formset实现,批量增加

这里需要两个知识点:  - formset  - 自动发现项目中的URL1. 什么是formset:  Django中 form组件 或 ModelForm组件,用于做一个表单的验证。 接收前端form表单中的数据,并进行验证。 并且还可以用于表单的渲染工作。 (就是直…

HDU 1247 Hat’s Words 字典树(Trie树)

HDU 1247 Hat’s Words 字典树(Trie树) 字典树的建立是应该都是一样的 下面是我的做法: 建立完后, 对每一个单词都进行find_string()判断是否符合, 分别对其分成两半, 用j分隔开(左闭右开); 分别find()其子串[0, j1), [j1, string_len), 当两子串都找到后,则输出此主串, 然后,b…

setBackgroundResource的一个问题

2019独角兽企业重金招聘Python工程师标准>>> 一&#xff0c;<RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android" android:id"id/layout" android:layout_width"fill_parent" android:layout_height…

Memcache应用场景

Memcache应用场景介绍面临的问题对于高并发高访问的Web应用程序来说&#xff0c;数据库存取瓶颈一直是个令人头疼的问题。特别当你的程序架构还是建立在单数据库模式&#xff0c;而一个数据池连接数峰 值已经达到500的时候&#xff0c;那你的程序运行离崩溃的边缘也不远了。很多…

mingw + msys 上编译 ffmpeg

下载以下文件 mingw msys msysdtk ffmpeg-0.6.1 1.安装 mingw &#xff0c;一路next d:\mingw 2.安装 msys &#xff0c;msysdtk 到同样的路径下,比如:d:\msys\1.0&#xff0c;ffmpeg需要用到perl&#xff0c;刚好msysdtk中有 3.整合 msys 和 mingw 创建文件 d:\msys\1.0\…

双向长短期神经网络(Bi-LSTM)-多输入时序预测

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分代码展示&#xff1a; 四、完整代码下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编…

微软的云笔记:OneNote+SkyDrive

OneNote是微软的一款笔记软件&#xff08;如果单说功能要绝对要比EverNote强大多了&#xff09;&#xff0c;它可以让你随时记录各种文字、图片&#xff0c;同时在格式排版方面它也继承了Word的强大编辑功能。但是随着各种移动办公需求的产生OneNote这种本地化的保存方式确实在…