“checkpoint_segments”这个参数我不是很了解,我个人的看法是它的意思是wal日志文件的数量;我把参数的值配置为64,但是在pg_xlog目录下可以看到131个文件。
有人能解释一下参数吗?
--detail
postgres=# show checkpoint_segments;
checkpoint_segments
---------------------
64
(1 row)
[postgres@pg_root]$ cd $PGDATA
[postgres@pg_root]$ ls -lrt pg_xlog | wc -l
132
Run Code Online (Sandbox Code Playgroud)
小智 6
对于背景:WAL(预写日志记录)是一种机制,可确保在发生崩溃时可以恢复数据库,而无需在每次写入后刷新数据文件。基本上,在将任何更改写入数据文件之前,首先将其记录下来。如果发生崩溃,日志可用于重做未写入磁盘的任何更改。
pg_xlog 中的每个文件都是一个 WAL 段。checkpoint_segments, 以及checkpoint_timeout, 控制何时完成 WAL 检查点(checkpoint_segments在填充段或checkpoint_timeout经过几秒钟后完成检查点,以先到者为准);检查点是保证数据文件已被刷新的时刻,因此重做过程不需要考虑检查点之前日志中的任何事务。
根据文档(这是我从中抄录了大部分内容的地方),在 8.3 之前,2 * checkpoint_segments + 1pg_xlog 目录中通常会有段文件;从 8.3 开始,预期的数字是(2 + checkpoint_completion_target) * checkpoint_segments + 1(或wal_keep_segments9.0,如果更大)。在任何情况下,对于checkpoint_segments64 的131 个段文件接近预期的最小值。
| 归档时间: |
|
| 查看次数: |
9755 次 |
| 最近记录: |