关于checkpoint_segments参数

我不知道参数“checkpoint_segments”非常好,我个人的观点是这意味着沃尔沃日志文件的数量; 我将参数的值configuration为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 

对于后台:WAL(预写式日志logging)是确保在发生崩溃时可以恢复数据库的机制,无需在每次写入之后刷新数据文件。 基本上,在将任何更改写入数据文件之前,首先将其logging下来。 在发生崩溃的情况下,可以使用日志来重做所有未更改到磁盘的更改。

pg_xlog中的每个文件都是一个WAL段。 checkpoint_segmentscheckpoint_timeout一起控制WAL检查点何时完成(检查点是在checkpoint_segments段已经填满或checkpoint_timeout秒已经过去之后完成的,以先到者为准); 检查点是确保数据文件已被刷新的时刻,因此重做进程不需要考虑检查点之前的日志中的任何事务。

根据文档 (这是我从上面的大部分内容中删除的),在8.3之前,pg_xlog目录中通常会有2 * checkpoint_segments + 1段文件; 自8.3以来,预期的数量是(2 + checkpoint_completion_target) * checkpoint_segments + 1 (或者9.0中的wal_keep_segments ,如果更大)。 在任何情况下, checkpoint_segments为64的131个段文件接近预期的最小值。