检查点
checkpoint_segments
参数说明:设置checkpoint_timeout周期内所保留的最少WAL日志段文件数量。每个日志文件大小为16MB。
参数类型:SIGHUP
取值范围:整型,最小值1
默认值:64
提升此参数可加快大数据的导入速度,但需要结合checkpoint_timeout、shared_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目录下,直到对应的数据库/表空间被删除或者节点重启会被清理。