1、GUC参数最大最小值的设置是一个开区间,我们看实数的设置
if (newval->realval < conf->min || newval->realval > conf->max)
2、checkpoint_completion_target 取值范围 (0.0,1.0)
{ {"checkpoint_completion_target",PGC_SIGHUP,WAL_CHECKPOINTS,gettext_noop("Time spent flushing dirty buffers during checkpoint,as fraction of checkpoint interval."),NULL },&CheckPointCompletionTarget,0.5,0.0,1.0,NULL,NULL },
3、新参数min_wal_size、max_wal_size
以前叫做checkpoint_segments 已经消失,原意是Maximum number of log file segments between automatic WAL checkpoints
4、max_wal_size 的定义和计算方式
{ {"max_wal_size",gettext_noop("Sets the WAL size that triggers a checkpoint."),GUC_UNIT_XSEGS },&max_wal_size,64,2,INT_MAX,assign_max_wal_size,
公式
{"TB",GUC_UNIT_XSEGS,(1024 * 1024 * 1024) / (XLOG_SEG_SIZE / 1024)},{"GB",(1024 * 1024) / (XLOG_SEG_SIZE / 1024)},{"MB",-(XLOG_SEG_SIZE / (1024 * 1024))},{"kB",-(XLOG_SEG_SIZE / 1024)},
结合 GUC代码知道,最后得到的值已经是段数
5、每次 checkpoint 涉及的最大段数,原来是由我们通过参数来直接指定的,而现在
target = (double) max_wal_size / (2.0 + CheckPointCompletionTarget); /* round down */ CheckPointSegments = (int) target; if (CheckPointSegments < 1) CheckPointSegments = 1;
我们知道CheckPointCompletionTarget 取值范围是 (0.0,1.0),所以最终CheckPointSegments得到的值范围是max_wal_size 的 1/3 ~ 1/2,最小为1。
-------------------------------------------- 权宗亮 神州飞象(北京)数据科技有限公司 我们的力量源自最先进的开源数据库Postgresql [email protected]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。