PostgreSQL WAL日志
1 什么时候发生检查点
- checkpoint_timeout。
- 超过
max_wal_size
所指定的大小,删除最老的wal segment file
时。 - 在
smart
和fast
情况下关闭。 - 手动checkpoint。
2 max_wal_size
max_wal_size 设置是自动检查点之间增长的最大预写日志记录(WAL)量。默认是1GB,如果超过了1GB,则会发生检查点。这是一个软限制。在一个特殊的情况下,比如系统遭遇到短时间的高负载,日志产生几秒种就可以达到1GB,这个速度已经明显超过了checkpoint_timeout ,pg_wal目录的大小会急剧增加。此时我们可以从日志中看到相关类似的警告。
2.1 checkpoint_timeout
使用默认值,检查点将在 checkpoint_timeout=5min。也就是每5分钟触发一次
2.2 min_wal_size
min_wal_size 参数是只要 WAL 磁盘使用量保持在这个设置之下,在做检查点时,旧的 WAL 文件总是被回收以便未来使用,而不是直接被删除。
3 怎么样确定什么时候产生检查点呢 ?
第一步:计算每天wal日志的产生量 。
第二步: 根据 max_wal_size 设置的大小,计算检查点发生的时间。