如何理解fsync的打开关闭以及和full_page_writes的关系

本文探讨了PostgreSQL中的fsync参数及其与full_page_writes的关系。fsync=on时,数据会立即写入磁盘,确保一致性;而fsync=off则依赖操作系统调度,可能导致数据不一致。full_page_writes参数在fsync=off时关闭,可减少磁盘写入,但增加恢复风险。检查点操作涉及识别脏页、写入数据文件并使用fsync保证持久性。
摘要由CSDN通过智能技术生成

如果打开这个参数,PostgreSQL服务器将尝试确保更新被物理地写入到磁盘,做法是发出fsync()系统调用或者使用多种等价的方法(见wal_sync_method)。这保证了数据库集簇在一次操作系统或者硬件崩溃后能恢复到一个一致的状态。

如何理解官网上这解释:

checkpoint简单点说就是一个数据库事件,用来保证数据一致性和完整性。
当我们在数据库中执行checkpoint时,就会将其之前的脏数据刷到磁盘,从而实现数据缩短数据库崩溃恢复时间的目的。

当执行checkpoint时,数据库主要完成以下几个工作:
识别shared buffers中所有的脏页
将脏页写入相应的数据文件
确保修改后的文件通过fsync()写入到磁盘

注意:fsync()函数用于强制从缓冲区高速缓存中物理写入数据,并确保在系统崩溃或其他故障之后,直到fsync()调用时的所有数据都记录在磁盘上。

对于fsync=on时,这个时候执行检查点,数据库直接调用OS的fsync函数,立刻直接写入硬盘,注意这个立刻,而当fsync=off时,数据库会把脏页写入os,然后os再根据系统的调度算法,把脏页写入磁盘,注意这里不是立刻,总之就是系统可能在干别的活,你先排队把,我先干完别的,再把脏页写入磁盘,这就导致了如果我系统崩溃,系统内的数据还未写入磁盘。数据未写入磁盘等数据库恢复的时候,会

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值