CheckPoint

checkpoint又名检查点,一般checkpoint会将某个时间点之前的脏数据全部刷新到磁盘,以实现数据的一致性与完整性。

checkpoint功能,其主要目的是为了缩短崩溃恢复时间,PostgreSQL在崩溃恢复时会以最近的checkpoint为基础,不断应用这之后的WAL日志。

以下几种情况会触发数据库操作系统做检查点操作:

  • 超级用户(其他用户不可)执行CHECKPOINT命令
  • 数据库shutdown
  • 数据库recovery完成
  • XLOG日志量达到了触发checkpoint阈值
  • 周期性地进行checkpoint
  • 需要刷新所有脏页

WAL日志文件大小 16 MB

postgresql.conf中与检查点相关参数:

  • checkpoint_segments
    WAL log的最大数量,系统默认值是3。超过该数量的WAL日志,会自动触发checkpoint。
  • checkpoint_timeout
    系统自动执行checkpoint之间的最大时间间隔。系统默认值是5分钟。
  • checkpoint_completion_target
    该参数表示checkpoint的完成时间占两次checkpoint时间间隔的比例,系统默认值是0.5,也就是说每个checkpoint需要在checkpoints间隔时间的50%内完成。
  • checkpoint_warning
    系统默认值是30秒,如果checkpoints的实际发生间隔小于该参数,将会在server log中写入写入一条相关信息。可以通过设置为0禁用。

猜你喜欢

转载自www.cnblogs.com/ckqq/p/9902497.html