加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

参数max_wal_size与min_wal_size的计算与影响

发布时间:2020-12-13 17:05:54 所属栏目:百科 来源:网络整理
导读: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("T

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 zongliang.quan@postgresdata.com

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读