更新时间:2024-09-02 GMT+08:00

检查点

checkpoint_segments

参数说明:设置checkpoint_timeout周期内所保留的最少WAL日志段文件数量。每个日志文件大小为16MB。

参数类型:SIGHUP

取值范围:整型,最小值1

默认值:64

提升此参数可加快大数据的导入速度,但需要结合checkpoint_timeoutshared_buffers这两个参数统一考虑。这个参数同时影响WAL日志段文件复用数量,通常情况下pg_xlog文件夹下最大的复用文件个数为2倍的checkpoint_segments个,复用的文件被改名为后续即将使用的WAL日志段文件,不会被真正删除。

checkpoint_timeout

参数说明:设置自动WAL检查点之间的最长时间。

参数类型:SIGHUP

取值范围:整型, 30~3600(秒)

默认值:15min

在提升checkpoint_segments以加快大数据导入的场景也需将此参数调大,同时这两个参数提升会加大shared_buffers的负担,需要综合考虑。

enable_delayed_unlinks

参数说明:设置是否开启检查点延迟删除特性。该参数仅9.1.0及以上集群版本支持。

参数类型:SIGHUP

取值范围:布尔型

  • on表示开启检查点延迟删除特性。
  • off表示关闭检查点延迟删除特性。

默认值:on

  • 当开启检查点延迟删除后,主DN创建checkpoint时,会将待删除的relfilenode文件移动到对应的数据库的pg_delayed_unlinks_bin目录下。
  • 判断OID是否复用时,除了会检查对应对应的数据库目录下的relfilenode文件是否存在,还会判断其下的pg_delayed_unlinks_bin目录下是否存在。
  • 当备DN回放到对应的检查点记录后,主DN收到回放进度时会在下一个checkpoint将pg_delayed_unlinks_bin目录下与备DN回放到的checkpoint对应的那一批relfilenode文件删除掉。
  • 当记录的延迟删除的relfilenode足够多时(1000万),多余的relfilenode会残留在pg_delayed_unlinks_bin目录下,直到对应的数据库/表空间被删除或者节点重启会被清理。