千家信息网

PostgreSQL DBA(20) - WAL full-page-write浅析

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,full-page-write在T1,数据库成功执行checkpoint;在T2,执行DML语句,这时候相关的数据会写入到WAL中(此处忽略了WAL buffer);在T3,提交该事务;在T4,bgw
千家信息网最后更新 2025年01月21日PostgreSQL DBA(20) - WAL 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安全错误 数据库的锁怎样保障安全 关于网络安全的成语有哪些 傻瓜进销存软件使用的数据库 做服务器安全问题 潮汕苹果软件开发多少钱 数据库系统及应用第三版魏祖宽 上汽大众南京分公司软件开发 私有协议文件管理服务器 服务器ssd容量小数量多好 win10如何搭建dns服务器 三级网络技术简历介绍 软件开发售后方案怎么写 板娘小薇明日之后新服务器 中国的法律数据库 软件开发面向对象和面向过程 http500服务器维护要多久 游戏服务器运维一个月多少钱 加强网络安全管理的建议案 微博服务器异常时内容照常浏览 华为免费培训软件开发 台州机场网络安全 10000转服务器硬盘 湖南农产品供应链服务软件开发商 政府软件开发的服务怎么样 在创建数据库表结构时为该表 浙江商城软件开发定制 工会网络安全宣传制度 珠海国企软件开发招聘 属于中国的数据库 当老师好还是学计算机网络技术好 csmar数据库的数据怎么下载
0