PG后台进程个人解读和与oracle 的比较

1.background writer (后台写进程)

与OracleDBWR进程工作原理类似,都是负责把缓冲区里面的脏块写到数据文件中,写的目的有两个:

1.为了保存数据。

2.为了释放内存空间。

触发background writer 写的条件:

1.脏块达到了阈值。

2.内存没有可用空间了。

3.超过bgwriter_delay 参数设置的时间,bgwriter会写。

与Oracle不同的是:

oracle的内存结构包括shard pool与缓冲区  buffer cache以及redo log buffer等其它内存结构,oracle同步dbwr进程把脏块写入到数据文件。

PG 的缓冲区叫做Shared buffer pool ,如果学过oracle,这里类似于oracle的shared pool+buffer cache。

2.WAL writer  (WAL写进程)

作用:把日志缓冲区WAL buffer里面的日志条目写到日志文件

触发WAL writer 写的条件:

1.发出commit。

2.WAL buffer空间不足。

3.超时,commit_delay:表示一个已经提交的数据在WAL缓冲区中存放的时间,默认值是0毫秒,表示不用延迟;设置为非0值时事务执行commit后不会立即写入WAL中,而仍存放在WAL缓冲区中,等待WalWriter进程周期性地写入磁盘。

4.bgwriter写进程之前,WAL writer要先写。

与Oracle LGWR进程原理十分相似。

3.CheckPoint(CKPT)

职责:

1.把WAL buffer里面的脏块写入到数据文件

这一点与oracle 有些不同,oracle的检查点进程是给DBWR进程发信号,让DBWR进程去写,而PG的CKPT进程本身就有写脏块的能力。

2.更新检查点信息到控制文件与日志文件

3.数据库发生备份的时候会发生检查点

4.autoVacuum进程

在PG数据库中,对数据进行UPDATE或者DELETE操作后,数据库不会立即删除旧版本的数据,而是标记为删除状态。这是因为PG数据库具有多版本的机制,如果这些旧版本的数据正在被另外的事务打开,那么暂时保留他们是很有必要的。当事务提交后,旧版本的数据已经没有价值了,数据库需要清理垃圾数据腾出空间,而清理工作就是AutoVacuum进程进行的。

5.statistics collector 进程

PG 统计收集器。

无论是oracle还是PG 优化器能做出正确的执行计划依赖于正确的统计信息,statistics collector 进程 负责收集对象最新的统计信息, 便于优化器做出正确的执行计划,当然,Oracle 11g中也有自动收集统计信息的功能,但Oracle中没有一个单独的进程来做这件事。

6.logging collector 日志收集进程

我认为类似于Oracle 的diag进程,负责各种Error信息,定位慢查询SQL,数据库的启动关闭信息,发生checkpoint过于频繁等的告警信息,诸如此类。

PG的pg_log 日志默认竟然是不开启的?

7.archiver 归档进程

copy WAL日志进行归档,与oracle 一样,数据库在归档模式才会有这个进程。

 

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

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

相关文章

【C++程序员的自我修炼】string 库中常见的用法 (一)

唤起一天明月照我满怀冰雪浩荡百川流鲸饮未吞海 剑气已横秋 目录 string 库的简介 string 的一些小操作 构造函数的使用 拷贝构造的常规使用 指定拷贝内容的拷贝构造 拷贝字符串开始的前 n 个字符 用 n 个字符初始化 计算字符串的长度 string 的三种遍历方式 常规的for循环 op…

低空经济+无人机:细分赛道万亿级别市场崛起,可能成为年内最大热点

近年来,低空经济作为一种新兴的产业,正在快速发展。特别是在无人机的快速普及下,低空经济已经展现出巨大的潜力和市场前景。无人机从狭窄的“会飞的相机”逐渐进入到更多场景,从消费市场进入到工业市场,不断拓展其应用…

AJAX家政系统 自营+多商家(高级授权)+独立端口 -源码下载

应用介绍 后台:https://service.hnajax.com/hxeJVakAdf.php/index/login AJAX家政系统 自营多商家(高级授权)独立端口 基于FastAdmin和原生微信小程序开发的一款同城预约、上门服务、到店核销家政系统,用户端、服务端(高级授权)、门店端(高级授权)各端…

如何使用Go语言进行并发安全的数据访问?

文章目录 并发安全问题的原因解决方案1. 使用互斥锁(Mutex)示例代码: 2. 使用原子操作(Atomic Operations)示例代码: 3. 使用通道(Channels) 在Go语言中,进行并发编程是常…

综合性练习(后端代码练习3)——留言板

目录 一、准备工作 二、约定前后端交互接口 1、需求分析 2、接口定义 (1)发布留言 (2)获取留言 三、实现服务器代码 1、lombok介绍 (1)引入依赖 (2)使用lombok &#xff…

OI Wiki—枚举

//新生训练,搬运整理 简介 枚举(英语:Enumerate)是基于已有知识来猜测答案的问题求解策略。 枚举的思想是不断地猜测,从可能的集合中一一尝试,然后再判断题目的条件是否成立。 要点 给出解空间 建立简洁…

mac虚拟机软件哪个好 mac虚拟机怎么安装Windows 苹果Mac电脑上受欢迎的主流虚拟机PK Parallels Desktop和VM

什么是苹果虚拟机? 苹果虚拟机是一种软件工具,它允许在非苹果硬件上运行苹果操作系统(如ios)。通过使用虚拟机,您可以在Windows PC或Linux上体验和使用苹果的操作系统,而无需购买苹果硬件。 如何使用苹果虚…

字节大小转换字符串

#pragma once#include <string> #include <stdint.h>#ifdef _UNICODE using _tstring std::wstring; #else using _tstring std::string; #endif// // brief: 字节大小格式化 // param: nBytesSize 输入字节大小 // param: bSpace 输出是否需要…

2024年最新省市县三级行政区划数据(审图号:GS(2024)0650号)

2024年省、市、县三级行政区划数据由国家基础地理信息中心发布&#xff0c;通过《2024版国家地理信息公共服务平台&#xff08;天地图&#xff09;》正式对外提供。这份数据涵盖了最新的省市县三级行政区划信息&#xff0c;更新于2024年1月&#xff0c;提供了详细的矢量数据下载…

vscode 使用code runner 运行代码输出乱码

vscode 使用code runner 运行代码输出乱码 先指出问题所在&#xff1a; 代码文件使用的编码格式和终端使用的编码格式不一致&#xff0c;查看代码文件右下角&#xff0c;会显示代码文件的编码格式。 测试代码如下&#xff1a; #include<iostream> using namespace std…

Python爬虫-BeautifulSoup解析

1.简介 BeautifulSoup 是一个用于解析 HTML 和 XML 文档的 Python 库。它提供了一种灵活且方便的方式来导航、搜索和修改树结构或标记文档。这个库非常适合网页抓取和数据提取任务&#xff0c;因为它允许你以非常直观的方式查询和操作文档内容。 2.安装 Beautiful Soup 终端输…

Java学习第02天-类型转换、运算符

目录 类型转换 自动类型转换 表达式的自动类型转换 强制类型转换 运算符 基本运算符 案例解答 连接字符串 自增自减运算符 面试习题 赋值运算符 比较运算符 逻辑运算符 基本逻辑运算符 短路逻辑运算符 三元运算符 基础知识 拓展案例 运算符优先级 读取用户…