PostgreSQL启动过程中的那些事十九:walwriter进程二

本文深入探讨了PostgreSQL的walwriter进程,特别是WalWriterMain函数,它负责设置信号处理、内存上下文,并进入无限循环以检查和处理信号。关键在于调用XLogBackgroundFlush将XLOG写入事务日志,确保在适当条件下执行日志写入和同步。这一过程涉及到write和fsync操作,直至WriteRqst指定位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3

        这节主要讨论walwriter进程到了WalWriterMain,设置合适的信号处理句柄,创建一个资源属主以保持对本进程资源的跟踪,创建一个本进程的所有工作都在其内做的内存上下文"Wal Writer",创建这个内存上下文是为了本进程在错误恢复期间能重置context并且因此避免可能的内存泄漏。设置错误跳跃点。接着不堵塞信号(当postmaster进程fork本进程时用PG_SETMASK(&BlockSig)堵塞了他们)。然后进入无限循环,检查并处理任何请求或者最近收到的信号。然后调用XLogBackgroundFlush把相应XLOG写入事务日志文件。然后睡眠指定时间后再接着循环。

 WalWriterMain方法的调用序列图

 

下面时WalWriterMain流程图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值