如何理解PostgreSQL全页写?

  读了很多PostgreSQL的FullPageWrite过程,结果思考时把自己绕进去了。每次感觉读懂了,但是都没能理解,其实是一个很简单的逻辑。
  全页写发生在PG的Checkpoint时候,不要过于考虑全页写在checkpoint中的过程,而是单纯思考其作用,其实很好解。
  假设没开启全页写的场景下,在checkpoint完成之后,后续数据库持续读写,然后bgwriter的向底层刷脏,某个时刻刷脏异常断电,导致磁盘的页只写了部分,数据页异常不完整了。然后数据库重启之后,从redo点开始回放wal,从上次redo点开始回放,但是磁盘上的数据页本身就不完整,如何能回放成功呢?所以在每次checkpoint成功之后,第一次数据页的修改的wal日志中,对整个数据页进行备份,写到wal中。这样后续即便数据库运行过程中出现部分页写,数据页不完整的情况,那么后续起来后,反正从redo点开始回放,而回放的同时,会发现wal中有备份块,那么就会覆盖页面内容,这样也就能保证数据一致了。

问:如果checkpoint过程中崩溃了怎么办?

  这也不是问题,因为redo点只有在checkpoint成功后才会记录到pg_controldata文件中,在checkpoint过程中崩溃了,下次启动时,从上次checkpoint生成的redo点开始回放,因为上次的checkpoint完成redo点之后针对数据页第一次的修改都保存了全量数据,所以用wal中的数据页块直接覆盖本地的数据页,然后一步步回放至最近的wal记录,这样保证了数据库的一致性。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【K8S系列】Kubernetes Service 基础知识 详细介绍

在 Kubernetes 中,Service 是一种抽象的资源,用于定义一组 Pod 的访问策略。它为这些 Pod 提供了一个稳定的访问入口,解决了 Pod 可能频繁变化的问题。本文将详细介绍 Kubernetes Service 的类型、功能、使用场景、DNS 和负载均衡等方面。 1.…

react 总结+复习+应用加深

文章目录 一、React生命周期1. 挂载阶段(Mounting)补充2. 更新阶段(Updating)补充 static getDerivedStateFromProps 更新阶段应用补充 getSnapshotBeforeUpdate3. 卸载阶段(Unmounting) 二、React组件间的…

windows 训练yolov8官方数据集

第一步:安装Anaconda3-2024.06-1-Windows-x86_64.exe 下载地址:https://repo.anaconda.com/archive/ 第二步:创建环境 打开Anaconda Prompt 输入 conda info -e 打印: 已经安装了一些环境,然后我们创建新的环境&a…

大模型面试挺水的,面试官听到这些直接过

AI大模型600道面试总结(LLM) 1、目前主流的开源模型体系有哪些? 目前 主流的开源模型体系 分三种: 第一种:prefixDecoder系 介绍:输入双向注意力,输出单向注意力 代表模型:ChatGLM、ChaGLM2、U-PaLM 第二种:causal Decader系 介绍:从左到右的单向注意力 代表…

【状态机DP】力扣1186. 删除一次得到子数组最大和

给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能…

驱动-----LED

前面我们学习了demo1的驱动的编写,在写LED的时候,我们可以在demo1的基础上修改。 1.首先就是修改名字,把所有的demo改成led,使用一个字符串替换指令。 2.设备号要变 3.想操作硬件,LED的初始化,亮灭 LED的初始化,在open的时候实现。 亮灭在write的时候实现。 现在就是…

技术成神之路:设计模式(二十三)解释器模式

相关文章:技术成神之路:二十三种设计模式(导航页) 介绍 解释器模式(Interpreter Pattern)是一种行为设计模式,用于定义一种语言的文法表示,并提供一个解释器来处理这种文法。它用于处理具有特定语法或表达…

移远通信斩获两项车载大奖,引领全球智能网联汽车产业发展

10月24日,由盖世汽车主办的2024第六届金辑奖中国汽车新供应链百强颁奖盛典在上海隆重举行。 作为全球领先的物联网和车联网整体解决方案供应商,移远通信凭借智能座舱模组AG855G、车载5G模组AG59x系列,以及公司在海外市场的优异表现&#xff0…

Mac 上无法烧录 ESP32C3 的问题记录:A fatal error occurred:Failed to write to target RAM

文章目录 问题描述驱动下载地址问题解决:安装 CH343 驱动踩的坑日志是乱码 问题描述 我代码编译可以,但是就是烧录不上去 A fatal error occurred:Failed to write to target RAM(result was 01070000:Operation timed out) Uploaderror:上传失败&…

selenium脚本编写及八大元素定位方法

selenium脚本编写 上篇文章介绍了selenium环境搭建,搭建好之后就可以开始写代码了 基础脚本,打开一个网址 from selenium import webdriver driver webdriver.Chrome()#打开chrome浏览器 driver.get(https://www.baidu.com) #打开百度 打开本地HTML文件 上篇…

ctfshow(265->266)--反序列化漏洞--指针引用与php://input读取请求体

Web265 源代码: error_reporting(0); include(flag.php); highlight_file(__FILE__); class ctfshowAdmin{public $token;public $password;public function __construct($t,$p){$this->token$t;$this->password $p;}public function login(){return $this…

企业贷款大揭秘:税贷VS票贷,哪个更适合你?

在金融界,资金就像是现代经济的血液,特别是对于企业的发展来说,银行的资金支持简直是不可或缺的。最近,多家银行可是动作频频,加快了资金投放的步伐,尤其是制造业、小微企业、专精特新以及“三农”这些领域…

网络编程 Linux环境 C语言实现

进程间通信的延续 跨电脑进程间通信 一、远程通信方式 电路交换------老式有线电话通信 ​ 报文交换 ​ 分组交换 支持分时机制的(分片机制)报文交换 ​现行网络大部分都是采用分组交换形式 二、网络&互联网&因特网 网络Network:多台计算机通过某种传输…

Javaee---多线程(一)

文章目录 1.线程的概念2.休眠里面的异常处理3.实现runnable接口4.匿名内部类子类创建线程5.匿名内部类接口创建线程6.基于lambda表达式进行线程创建7.关于Thread的其他的使用方法7.1线程的名字7.2设置为前台线程7.3判断线程是否存活 8.创建线程方法总结9.start方法10.终止&…

微积分复习笔记 Calculus Volume 1 - 3.5 Derivatives of Trigonometric Functions

3.5 Derivatives of Trigonometric Functions - Calculus Volume 1 | OpenStax

西门子S7-200 SMART 多泵轮换功能库案例下载

通用描述 在现场使用多台风机水泵的场合,需要考虑对多台风机水泵进行轮换,因此如何合 理的对多台风机水泵进行轮换就成了一道难题,本文针对上述情况,专门开发了多 泵轮换的应用库,可以方便统计泵的运行时间&#xf…

Python print()输出颜色设置

标准格式 print("\033[显示方式;前景颜色;背景颜色m…\033[0m") 显示方式 前景颜色和背景颜色 print("\033[0;37;41m我是小杨我就这样\033[0m") print("\033[0;37;42m我是小杨我就这样\033[0m") print("\033[0;37;…

AI助理与知识库:企业新人培训的革新力量

在快速变化的商业环境中,企业新人培训模式的创新已成为提升组织效能的关键。特别是人工智能(AI)助理的引入,结合知识库的应用,为企业新人培训带来了革命性的变化。以下是对这一变革的深入探讨与前景展望,旨…

文本转语音工具 | Balabolka v2.15.0.880 便携版

Balabolka是一款功能强大的文本转语音(TTS)软件,它能够将文字转换成语音并保存为多种音频格式,如WAV、MP3、OGG或WMA。这款软件兼容多种文件格式,包括但不限于AZW、CHM、DjVu、DOC、EPUB、FB2、LIT、MOBI、ODT、PDF、P…

3.堆栈的理解

堆栈是同一段进行插入删除的线性表 (先入后出) 栈式最基础的常见的数据结构之一 进入一个新的函数的时候 会开辟一个空间,存放需要的数据 int add(int a,int b,int c) {return abc } int main() {add(1,2,3) }//add(1&#xff…