文章目录
checkpoint相关参数
openGauss checkpoint 相关参数官方介绍
官方链接地址:
https://docs.opengauss.org/zh/docs/5.0.0/docs/DatabaseReference/%E6%A3%80%E6%9F%A5%E7%82%B9.html




参数表格
| 参数 | 参数说明 | 默认值 | 生效模式 |
|---|---|---|---|
| checkpoint_segments | 设置checkpoint_timeout周期内所保留的最少WAL日志段文件数量。每个日志文件大小为16MB。提升此参数可加快大数据的导入速度,但需要结合checkpoint_timeout、shared_buffers这两个参数统一考虑。这个参数同时影响WAL日志段文件复用数量,通常情况下pg_xlog文件夹下最大的复用文件个数为2倍的checkpoint_segments个,复用的文件被改名为后续即将使用的WAL日志段文件,不会被真正删除。 | 64 | 全局参数,命令行设置即可 |
| checkpoint_timeout | 设置自动WAL检查点之间的最长时间。在提升checkpoint_segments以加快大数据导入的场景也需将此参数调大,同时这两个参数提升会加大shared_buffers的负担,需要综合考虑。 | 15min | 全局参数,命令行设置即可 |
| checkpoint_completion_target | 指定检查点完成的目标。 | 0.5 | 全局参数,命令行设置即可 |
| checkpoint_warning | 如果由于填充检查点段文件导致检查点发生的时间间隔接近这个参数表示的秒数,就向服务器日志发送一个建议增加checkpoint_segments值的消息。 | 5min | 全局参数,命令行设置即可 |
| checkpoint_wait_timeout | 设置请求检查点等待checkpointer线程启动的最长时间。 | 1min | 全局参数,命令行设置即可 |
| enable_incremental_checkpoint | 增量检查点开关。默认checkpoint为增量checkpoint,手动执行checkpoint时,会选择当前最后一条WAL日志的LSN为checkpoint.redo位点,等待pagewriter线程执行刷脏和fsync完成后,更新pg_control文件。 | on | postgresql.conf中设置,需重启 |
| enable_double_write | 双写开关。当增量检查点开关打开时,同时enable_double_write打开,则使用enable_double_write双写特性保护,不再使用full_page_writes防止半页写问题。 | on | postgresql.conf中设置,需重启 |
| incremental_checkpoint_timeout | 增量检查点开关打开之后,设置自动WAL检查点之间的最长时间。 | 1min | 全局参数,命令行设置即可 |
| enable_xlog_prune | 设置在任一备机断联时,主机是否根据xlog日志的大小超过参数max_size_for_xlog_prune的值而回收日志。 | on | 全局参数,命令行设置即可 |
| max_redo_log_size | 备DN表示当前回放的最新检查点位置和当前日志回放位置之间日志量的期望值,主DN表示恢复点到当前最新日志之间日志量的期望值,关注RTO的情况下,这个值建议不宜过大。 | 1GB | 全局参数,命令行设置即可 |
| max_size_for_xlog_prune | 在enable_xlog_prune、synchronous_commit都打开时生效,如果有备机断连且xlog日志大小大于此阈值,则回收日志。所有备机断联且无逻辑复制槽时,不回收日志。 | 2147483647kB | 全局参数,命令行设置即可 |
一个stop过长现象
缓冲池中脏页多,db stop 时间长
某些时候,db执行stop,执行时间很长,其中一个情况,就是缓冲池中的脏页过多,stop时db需要长时间的关闭时检查点,将脏页刷盘,因此时间会比较长。
至于是不是这个原因,可以通过排查来确定。
查询脏页缓冲区数量(需要pg_buffercache_pages()函数)
select count(*), pg_size_pretty(count(*) * 8 * 1024)
from pg_buffercache_pages()
where isdirty;
目前没有标准,说这个值是多少就会产生停库时间长的现象。需要根据实际的硬件环境来实测,本文只介绍个人的方法和思路。
如何解决
可以在每次停库之前,显性地执行checkpoint命令,可以将关闭时检查点变得轻量化,减少停机时间。
checkpoint;
关于参数的想法
产生缓冲区脏页比较多的情况,就是大量的数据修改,且缓冲区数据没有及时落盘。
在检查点的机制中,自动检查点的时间间隔和两次自动检查点之间的文件大小,会造成缓冲区脏页比较多。
checkpoint_timeout
checkpoint_segments
这两个参数要注意,设置合理即可,不需要纠结标准。没有问题的就是标准。

744

被折叠的 条评论
为什么被折叠?



