PostgreSQL(十二)全页写-full_page_writes

一、全页写的概述与特点

在PostgreSQL(十一)WAL日志管理中曾提到过,PG默认记录WAL日志的方式,是将原始SQL转换为特定格式后记录在文件中。

但实际上,pg还支持另一种记录WLA日志的方式,那就是全页写-full-page Writes。

全页写模式下,会将一整个数据块的内容写入 WAL文件中,而非只记录日志条目。

1、优点:解决块分离问题,保护数据完整性;

2、缺点:全页写会导致WAL日志膨胀,增加额外I/O,影响数据库整体性能;

3、控制:使用full_page_writes参数控制on/off .

4、模式:

       非强制模式:最后一次检查点之后,第一次修改的数据块会进行全页写,后续再修改时不会进行全页写,直到下一次检查点发生。full_page_writes=on后进入非强制模式。

       强制模式:当使用pg_basebackup工具对数据库进行备份时,会自动执行强制模式,在备份期间被修改的数据库会全部写入WAL当中;

            当执行pg_start_backup函数时,系统也会进入全页写模式,执行pg_stop_backup后停止。

二、导致块分离的原因

操作系统进行I/O操作时,以块为单位,例如:512字节、1kb等;

而数据库块一般是操作系统块的整数倍,比如2kb、4kb、8kb等;

因为块是操作系统最小的I/O单位,当数据库写一个数据块时,操作系统需要I/O多次,才能全部写完;

假如在I/O过程中系统断电、磁盘故障等原因,会导致一个数据库的数据块没有完整的写入,从而导致块分离。

三、全页写管理

以下情况可以考虑禁用全页写:

1、数据库有完整的备份;

2、优先考虑数据库整体性能;

3、选择能够阻止部分页面写入的文件系统(比如ZFS)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值