参数max_wal_size与min_wal_size的计算与影响

参数max_wal_size与min_wal_size的计算与影响

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, 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", PGC_SIGHUP, WAL_CHECKPOINTS,gettext_noop("Sets the WAL size that triggers a checkpoint."),NULL,GUC_UNIT_XSEGS},&max_wal_size,64, 2, INT_MAX,NULL, assign_max_wal_size, NULL},

公式

{"TB", GUC_UNIT_XSEGS, (1024 * 1024 * 1024) / (XLOG_SEG_SIZE / 1024)},{"GB", GUC_UNIT_XSEGS, (1024 * 1024) / (XLOG_SEG_SIZE / 1024)},{"MB", GUC_UNIT_XSEGS, -(XLOG_SEG_SIZE / (1024 * 1024))},{"kB", GUC_UNIT_XSEGS, -(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 zongliang.quan@postgresdata.com

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部