Advertisement

深入分析PostgreSQL BgWriter的实现细节

阅读量:

作者:徐田原

1.前言

PostgreSQL运行着一个后台进程bgwriter,在定期的时间间隔内将缓存数据更新至文件系统中。这种机制通过加速了缓存数据的有效更新频率,在搜索可用空闲缓存时通常会将已被污染或过期的数据(脏页)迁移到文件系统中——此举往往耗费较多的时间资源。与此同时这种方法也有助于加快执行checkpoint所需的总时间——因为checkpoint操作必须处理所有这些可能存在的脏页问题。

2.监控

BGWriter的监控功能仅能通过pg_stat_bgwriter表统计视图获取数据,并且它只统计了相关的运行情况数据

clean bigint buffers 的总数量

3.BgWriter进程

从功能角度来看,bgwriter进程的操作相对简单。它的工作模式基于定时执行机制,在后台持续进行特定任务的处理。该进程具备两个基本运行状态:正常运行状态与休眠运行状态两种模式切换机制。在正常运行状态下,在完成一次缓存刷新操作后会进入等待期(记为bgwriter_delay),其具体数值可在psql配置文件中进行设置,默认情况下设定为200毫秒(ms)。当系统检测到两次连续未需要进行缓存刷新的时间间隔后,则会触发切换至休眠运行状态,在此状态下 bgwriter所需的等待时间将缩短至原始延迟值的50倍(即50 * bgwriter_delay),

全部评论 (0)

还没有任何评论哟~