PostgreSQL参数wal_log_hints

wal_log_hints 参数设置为 on 时,在一次 checkpoint 操作后,数据页面的第一次修改会将整个页面内容写入 wal 日志,即使是一些非重要的标记位修改,也会将整个页面内容写入 wal 日志。

上述解释与 full_page_writes 参数的作用非常类似,但不同之处在于标记位修改也会导致整个页面内容写入 wal 日志,而 full_page_writes 则不会。比如页面元组的 infomask 字段,pg 中新插入提交的数据,其元组的 infomask 字段并没有设置为 commited 状态,在第一次读取该元组时才进行 infomask 设置,这个对元组标记位的操作在 wal_log_hints=on 的条件下,将会导致整个 page 页面被写入 wal 日志。

如果参数 data_checksums 设置为 on,那么元组标记位更新将会被写入 wal 日志,因此 wal_log_hints 参数会被忽略。可以开启 wal_log_hints 来测试 data_checksums 为 on 的场景下增加了多少额外的 wal 日志写入量。

wal_log_hints 默认值为 off,修改该参数需要重启数据库。

文章评论

0条评论