介绍

可查看 backgroud writer, checkpoint ,backend 进程刷写 Shared buffer 情况视图

pg数据库在写入时先在内存中更新shared buffer ,然后有checkpoint机制将脏数据刷写到磁盘。

视图

 select * from pg_stat_bgwriter ;
-[ RECORD 1 ]---------+------------------------------
checkpoints_timed     | 64017
checkpoints_req       | 458
checkpoint_write_time | 9608302902
checkpoint_sync_time  | 1189286
buffers_checkpoint    | 578367652
buffers_clean         | 329022
maxwritten_clean      | 2353
buffers_backend       | 29802728
buffers_backend_fsync | 0
buffers_alloc         | 83826180
stats_reset           | 2020-08-20 19:41:20.491551+08

负责将shared buffer 中的内容刷新到磁盘主要有三个进程完成

  • checkpoint
  • bgwriter
  • backend

视图内容主要也是针对这三个进程的统计信息

checkpoint

checkpoints_timed 周期性进行checkpoint的次数    
checkpoints_req   周期以外发生checkpoint的次数
checkpoint_write_time 刷写耗时
checkpoint_sync_time  同步耗时
buffers_checkpoint 写入量

bgwriter

buffers_clean bgwriter 写入量
maxwritten_clean bgwriter 一次写入量超过bgwriter_lru_maxpages停止次数

buffers_backend       backend 写入量
buffers_backend_fsync 同步写入次数

理想状态

大部分的脏数据都是bgwriter写回存储的,少量的脏数据是checkpointer写入的,更少的数据是backend写入的。因为backend写入数据成本非常高。

checkpoint 的写入基本都是周期性的写入。