PostgreSQL的进程架构和内存架构

news2024/11/25 2:40:36

文章首发地址

PostgreSQL的进程架构

PostgreSQL的进程架构是由多个进程组成的,每个进程都有不同的作用和职责。下面是PostgreSQL的进程架构的详细说明:

后台进程(Postmaster)

后台进程是PostgreSQL启动时创建的第一个进程,它负责管理和控制数据库系统的全局操作,如启动和关闭其他进程、管理共享缓存、处理全局锁、处理全局事务、管理日志等。在PostgreSQL中,每个连接进程都有一个单独的后台进程与之对应,这个后台进程会监控和管理它所对应的连接进程。

连接进程

连接进程是为客户端请求提供服务的进程,每个连接进程都与一个客户端对应,并且为该客户端提供服务。当客户端请求连接时,后台进程会为其分配一个新的连接进程,连接进程负责处理客户端发出的SQL语句,并返回相应的查询结果给客户端。连接进程之间是完全隔离的,它们之间不能共享内存或信息。

后台工作进程

后台工作进程是PostgreSQL中用于执行后台任务的进程,可以执行各种任务,如备份和恢复、自动分析和维护、监控、自动诊断和修复等。后台工作进程通常是由配置文件中的cron任务或者其他定时任务触发的,不需要与客户端进行交互。

后台进程

后台进程是PostgreSQL用于监视系统状态的进程,它可以自动化地监控系统状态,如记录日志、发送警报通知、监控资源使用情况等。后台进程通常会周期性地执行,以便及时发现和解决各种问题。

总之,PostgreSQL的进程架构非常复杂,包括多个进程和各种不同类型的职责和作用。了解PostgreSQL的进程架构可以帮助开发人员更好地理解PostgreSQL的工作原理,并且能够进行更好的性能优化和故障排查。

PostgreSQL的进程架构示例图:
在这里插入图片描述

PostgreSQL的内存架构

PostgreSQL的内存架构包括共享内存和进程内存两个部分,它们扮演着不同的角色和作用。

共享内存

共享内存是在PostgreSQL启动时分配的内存区域,它被所有的连接进程和后台进程所共享。共享内存包括:

  • 数据缓存区(Buffer Cache):缓存了近期查询过的表、索引以及其他数据,以便在后续的查询中快速访问。
  • 状态信息区(Shared memory):包括了各种全局状态信息,如事务状态、锁信息、进程和连接信息等。
  • 内部缓存区(Internal Cache):用于存储内部数据结构的缓存,如共享内存中的锁表、哈希表、等待事件队列等。
  • WAL缓冲区(WAL Buffer):用于缓存WAL日志的数据,以便在写入WAL文件之前进行排序和缓冲。

共享内存的优点是能够减少内存的重复使用,从而提高了PostgreSQL的性能和效率。但是,共享内存的使用需要考虑到并发性、锁和内存管理等问题,因此需要进行合理的设计和管理。

进程内存

进程内存是由每个连接进程单独分配的内存,它包括:

  • 连接信息:存储了客户端连接信息和连接状态,如用户名、密码和连接选项等。
  • 查询执行计划:存储了查询执行的计划和状态信息,如查询计划树和运行时的状态信息。
  • 临时缓冲区:用于存储中间结果和临时计算数据。
  • 状态信息:存储了当前进程的状态信息,如事务状态、锁信息等。

进程内存的优点是能够提高数据的隔离性和安全性,从而保护了每个连接进程的数据和状态。但是,进程内存的使用需要考虑到内存的分配和释放、数据隔离和共享等问题,因此需要进行合理的设计和管理。

总之,PostgreSQL的内存架构是由共享内存和进程内存两个部分组成,它们各自扮演着不同的角色和作用。共享内存提供了数据的共享和重复使用,从而提高了性能和效率,而进程内存提高了数据的隔离性和安全性,从而保护了每个连接进程的数据和状态。了解PostgreSQL的内存架构可以帮助开发人员更好地理解PostgreSQL的工作原理,并且能够进行更好的性能优化和故障排查。
PostgreSQL的内存架构示例图:
在这里插入图片描述

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

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

相关文章

Android oom_adj 详细解读

源码基于:Android R 0. 前言 在博文《oom_adj 内存水位算法剖析》一文中详细的分析了lmkd 中针对 oom_adj 内存水位的计算、使用方法,在博文《oom_adj 更新原理(1)》、《oom_adj 更新原理(2)》中对Android 系统中 oom_adj 的更新原理进行了详细的剖析。…

STM32定义变量到指定内存位置

rt thread, 怎么定义变量到指定内存位置? OpenCat是由未来可编程机器人宠物制造商Petoi开发的基于Arduino和Raspberry Pi的开源四足机器人宠物框架。 非 gcc 版 定义一个宏 #ifndef __MEMORY_AT #if (defined (__CC_ARM)) #define _…

来电屏蔽号码分析

场测反馈77号码开头的电话号码屏蔽后,来电可以屏蔽,但是短信无法屏蔽 //Blocker is close 行 2689: 05-19 12:12:36.477096 2348 2348 I TelecomFramework: TelephonyConnectionService: onCallFilteringCompleted(TC3_1, CallFilteringCompletionInf…

leetcode:1184. 公交站间的距离(python3解法)

难度:简单 环形公交路线上有 n 个站,按次序从 0 到 n - 1 进行编号。我们已知每一对相邻公交站之间的距离,distance[i] 表示编号为 i 的车站和编号为 (i 1) % n 的车站之间的距离。 环线上的公交车都可以按顺时针和逆时针的方向行驶。 返回乘…

ECharts笔记-------柱状图与折线图

这幅图表由title、legend、series、xAxis、yAxis和tooltip这六个组件组成,每个组件都有对应的属性来调节参数,title和legend的代码跟上一篇一样,这里就不多讲了。 tooltip组件 tooltip: {trigger: axis,axisPointer: { type: cross } }, t…

系统组网图

接收路由器发送的数据信息并解析,做出相应的指示,点击按键表示完成拣货。 标签ID码正面显示无线通信868M,跳频通信通信速率200K/50K覆盖通信半径30米以上多色LED高亮指示灯自定义双向通信协议,安全可靠 电子标签拣货系统就是通过…

诺康达将再次上会接受审核:曾遭暂缓审议,业绩可持续性值得商榷

撰稿|行星 来源|贝多财经 近日,深圳证券交易所披露的信息显示,北京诺康达医药科技股份有限公司(下称“诺康达”)将于2023年7月20日接受上市委的审议,并于7月13日更新了招股书(上会稿)。 据招股…

总部V批恩没有发送到分支流量,只有接收分支流量,分支无法访问总部内网资源

环境: 分支设备: AF8.0.48 联想笔记本 总部设备: SSL V批恩 V7.0 AF8.0.75 RUIJIE NBS5710-24GT4SFP-E 问题描述: 总部V批恩没有发送到分支流量,只有接收分支流量,分支无法访问总部内网资源&#…

H3C-Cloud Lab实验-单臂路由实验

实验拓扑图: 实验需求: 1. 按照图示为 PC3 和 PC4 配置 IP 地址和网关 2. PC3 属于 Vlan10,PC4 属于 Vlan20,配置单臂路由实现 Vlan10 和 Vlan20 三层互通 3. PC3 和 PC4 可以互通 实验步骤: 1. 连接所有设备 2. …

Unity游戏源码分享-卡通填色游戏Drawing Coloring Extra Edition 1.09

Unity游戏源码分享-卡通填色游戏Drawing Coloring Extra Edition 1.09 非常适合小朋友玩的小游戏 功能很齐全完善 项目地址:https://download.csdn.net/download/Highning0007/88050261

KuiperInfer深度学习推理框架环境配置-Ubuntu 22.04

KuiperInfer项目地址 Github项目地址 B站课程地址 安装Armadillo 官网:Armadillo官网 介绍:Armadillo C Library是一种C的线性代数库,包含一些矩阵和向量的运算,可以选用高效的LAPACK和BLAS进行加速。 矩阵相关计算的文档&…

Arthas和常量池

一、Arthas 快速入门 | arthas 1、Arthas使用 运行arthas提供的应用程序 curl -O https://arthas.aliyun.com/math-game.jar java -jar math-game.jar 运行arthas工具jar包 curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar 启动界面如下图&…

Google Play针对恶意软件采取最新反制措施!

近日,谷歌开始针对Google Play上不断入侵的恶意软件采取反制措施,要求所有以机构名义注册的新开发者账户在提交应用程序之前提供一个有效的D-U-N-S号码。 这项新措施能有效提高平台的安全性和可信度,同时也能够有效遏制新账户提交恶意软件的…

kubernetes中特定域名使用自定义DNS服务器出现的解析异常

故障发生背景: 租户反馈生产业务服务连接到中间件的时候,偶尔会有连接失败的情况,然后我们查看对应组件服务正常,手动请求组件服务也显示正常,让租户查看业务服务日志发现报错无法解析对应的域名,我们手动是…

数据库的分片策略

数据库的分片策略 1、范围分片2、hash 取模分片3、一致性hash 分片 1.分片策略 数据库的分片策略是指将数据库中的数据按照一定的规则和方式进行分割(分片)存储在不同的物理节点或服务器上的策略。分片策略旨在实现水平扩展,提高数据库的性…

暑假第九天打卡

英语: 新东方六级一单元单词刷题复习 离散: 例12 使用消解算法判断下述公式是否是可满足的: 公式 S p∧(p∨q)∧(p∨q)∧(q∨r)∧(q∨r) 解: S p∧(p∨q)∧(p∨q)∧(q∨r)∧(q∨r) //化为主合取式 循环1: S0 S1 {p…

Windows 进程和作业

Windows 进程和作业 创建进程CreateProcess 函数的参数CreateProcess 的流程 创建Windows“现代化”进程创建其他类型的进程 进程的内部构造EPROCESSKPROCESSPEBCSR_PROCESSW32PROCESS 受保护进程最小进程和 Pico 进程最小进程Pico进程 Trustlet 安全进程进程的终止作业作业的限…

合并完之后,进行回退

我是将分支合并到了uat_v3上,现在又要求将uat_v3上的代码回退到合并以前; 我是将origin/uat_v3 checkout 除一份本地uat_v3,然后选中合并以前的commit记录,新建分支 temp/reverse 分支; 这样我本地的temp/reverse分支就已经是合…

[Java进阶] Swing两万字大总结一(超详细教程,这不得收藏一波)

🔥一个人走得远了,就会忘记自己为了什么而出发,希望你可以不忘初心,不要随波逐流,一直走下去🎶 🦋 欢迎关注🖱点赞👍收藏🌟留言🐾 🦄 …

将类模板做为参数(类模板中使用)

将类模板做为参数(类模板中使用) 这种方式只在类模板中使用,函数模板不能使用这种方法。 将模板名做为一种特殊的数据类型,实例化对象的时候,使用模板名做为参数,传递给模板。 下面例子中,数组…