PostgreSQL DBA(20) - WAL full-page-write浅析
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,full-page-write在T1,数据库成功执行checkpoint;在T2,执行DML语句,这时候相关的数据会写入到WAL中(此处忽略了WAL buffer);在T3,提交该事务;在T4,bgw
千家信息网最后更新 2025年11月08日PostgreSQL DBA(20) - WAL full-page-write浅析
full-page-write
full-page-write在T1,数据库成功执行checkpoint;
在T2,执行DML语句,这时候相关的数据会写入到WAL中(此处忽略了WAL buffer);
在T3,提交该事务;
在T4,bgwriter把dirty pages写入到Data file中,但在写入过程中机器出现故障导致Crash(如掉电等),出现了部分写的情况。
为了应对这种情况,PG在T2写入WAL的时候,会把出现变化的page整页写入到WAL中,而不仅仅是tuple data。在数据库重启执行恢复的时候,在Redo point开始回放WAL时,如发现XLOG Record是FPI(full-page-image),则整页替换,通过这种机制解决了部分写的问题。
二、full-page-write的代价
当然这种机制不是免费的,其主要的负面影响是写放大。
由于整页写,不可避免的出现冗余数据;考虑这么一种情况:如果数据库很繁忙,而且数据的热点分散在不同的table上,同时checkpoint执行间隔较短,那非常多的page就会通过full-page-write写入的WAL中,导致日志空间快速膨胀。在极端情况下,page"满载"(基本没有空闲空间)的情况下更新其中一条记录都会导致整页写入WAL。
关于这部分的机制和解决方案,参考资料中的《如何遏制PostgreSQL WAL的疯狂增长》有详细论述。
三、参考资料
Write Ahead Logging - WAL
如何遏制PostgreSQL WAL的疯狂增长
PostgreSQL 可靠性分析 - 关于redo block原子写
数据
情况
数据库
机制
疯狂
参考资料
时候
空间
资料
部分
参考
增长
不同
繁忙
成功
不可避免
不仅仅
事务
代价
冗余
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络技术学习游戏
服务器安全论坛
谷歌服务器文件怎么打开
数据库oracle表空间
网络技术和物联网
eclipse链接数据库
进行数据库连接的一般过程
polardb数据库概念股
计算机 网络技术自我介绍
服务器数据库数据迁移
服务器虚拟化的含义
网络安全中的指示灯
只狼怎么不登录游戏服务器
猫眼票房和电影数据库哪个好
mc服务器怎么开始玩
网络安全法第一条说的什么
百世软件开发岗位级别
三线图怎么建立数据库
贵安新区南方电网数据库
浪潮服务器 管理口 ip
网络技术副总职责简述
公司人员信息数据库含哪些内容
幻塔ios有哪些服务器
discuz迁移服务器
上海上想网络技术有限公司
大话西游3如何选服务器
怎么配置多个数据库
球球大作战服务器崩溃吗
软件开发注册几类
服装软件与sql数据库