PostgreSQL 与检查点相关的参数分析

网友投稿 787 2022-05-29

在PG中,checkpoint的触发有4中场景:

1. 执行checkpoint命令

2. 执行一些命令间接触发的checkpoint, 如 pg_start_backup, CREATE DATABASE, or pg_ctl stop|restart 及个别其他命令

3. 自上次checkpoint执行之后到了一定的时间

4. WAL日志数量累积到一定数量

控制checkpoint的参数有很多个,本文将介绍其中几个的含义及注意事项。

1. checkpoint_timeout

这个参数控制系统自动执行checkpoint之间的最大时间间隔,如果间隔越大那么恢复的时间越长。系统默认是5分钟。

注意: 这个参数控制的是自动检查点的执行间隔,检查点还有其他触发机制, 例如 当堆积的WAL大小超过max_wal_size的话会立马触发一个checkpoint

2. checkpoint_flush_after

当checkpoint执行的时候刷了超过这个参数指定值大小的数据之后,尝试强制执行一次OS的文件写(fsync)。 缺省值是 256kB 不带单位的话是要乘以8KB, 如设置为32则就是256KB

PostgreSQL 与检查点相关的参数分析

3. checkpoint_completion_target(浮点数):

手册上对这个参数的解释是“Specifies the target of checkpoint completion, asa fraction of total time between checkpoints”,含义是设定一个目标:完成检查点所需要的时间占检查点之间总时间的目标比例。checkpoint_completion_target越大,意味着checkpointer进程休眠的机会越多,以控制脏块刷盘的进度。例如这个参数值如果是0.9,而PG预期下一次checkpoint发生在25s之后,则由于checkpoint而引发的IO操作会被平均分配在25*0.9=22.5s之内完成。既可以在下一次checkpoint发生前完成本次检查点操作,又不致引发IO的负载尖峰。

有个公式可以估算这个参数的最优值:  (checkpoint_timeout - 2min) / checkpoint_timeout

云数据库 GaussDB(for openGauss) 云数据库 postgresql 数据复制服务 DRS 数据库和应用迁移 UGO 数据管理服务 DAS

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:华为张平安:华为云沃土云创计划正式启动
下一篇:python二级答案(4)
相关文章