当前位置: 首页 > news >正文

PostgreSQL中的全页写

一、概述

在PGSQL数据库中,默认的页面大小为8KB,但是磁盘buffer的大小为4KB,扇区大小为512B。这就导致在操作系统的角度看数据库的写操作,其实并不是一种原子操作。如果操作系统发生了系统级别的故障,此时正好操作系统刷入了一个8KB页面的前半部分4KB,那么后半部分将缺失或失去了一致性。PGSQL自带的一致性校验方法可以检测到这种不一致性,但是无法解决这种不一致性。因此PGSQL采用了一种叫做全页写(Full Page Write)的机制来避免这种操作

二、全页写

为了解决上面的问题,MySQL采用的是双写机制,即保留备份页面,遇到页撕裂的情况时用备份页面覆盖写。但在PGSQL中,选择将整个数据页保存在WAL日志中。以checkpoint作为标志,当一个页面在checkpoint后被第一次修改时,会触发全页写机制。全页写在配置项里是可选的,参数为full_page_writes,默认为ON。在PITR期间,强制开启。在数据库备份操作期间,也会开启这个选项,用于防止出现页撕裂问题。

具体来说,页面会在其中记录最近一次操作的LSN,数据库的控制文件中也会记录数据库最近一次checkpoint时对应的LSN。这样就可以依此判断是否需要触发全页写。

http://www.xdnf.cn/news/483211.html

相关文章:

  • 【python编程从入门到到实践】第十章 文件和异常
  • Spring框架(三)
  • 7.重建大师点云处理教程
  • 每周靶点:PCSK9、Siglec15及文献分享
  • python基础语法(三-中)
  • [Java][Leetcode middle] 238. 除自身以外数组的乘积
  • 学习alpha
  • 【基础】Windows开发设置入门4:Windows、Python、Linux和Node.js包管理器的作用和区别(AI整理)
  • go.mod关于go版本异常的处理
  • 数据治理域——数据同步设计
  • HTML 中的 input 标签详解
  • 芯片测试之X-ray测试
  • 算法练习:19.JZ29 顺时针打印矩阵
  • SpringAI-RC1正式发布:移除千帆大模型!
  • handsome主题美化及优化:10.1.0最新版 - 2
  • [Unity]AstarPathfindingProject动态烘焙场景
  • 电脑出故障驱动装不上?试试驱动人生的远程服务支持
  • Vue3项目,子组件默认加载了两次,使用 defineAsyncComponent 引入组件后只加载一次
  • 简单入门RabbitMQ
  • Centos7 中 Docker运行配置Apache
  • 基于Scrapy-Redis的分布式景点数据爬取与热力图生成
  • skywalking使用教程
  • LLaMA-Factory:环境准备
  • 大语言模型核心技术解析:从训练到部署的全链路实践
  • Python web 开发 Flask HTTP 服务
  • leetcode 2901. 最长相邻不相等子序列 II 中等
  • 测试工程师如何学会Kubernetes(k8s)容器知识
  • 05-SpringBoot
  • 链表的中间结点数据结构oj题(力扣876)
  • BM25 算法与关键词提取在向量数据库中的实践优化