Majid Azimi Asked: 2012-05-29 23:44:53 +0800 CST2012-05-29 23:44:53 +0800 CST 2012-05-29 23:44:53 +0800 CST 达到 checkpoint_segments 时会发生什么? 772 我对 PostgreSQL 文档中的 checkpoint_segments 定义有点困惑。达到 checkpoint_segments 时会发生什么? shared_buffers 中的脏页写入 WAL。那么background writer有什么用呢? WAL 被合并到实际的数据文件中。 postgresql checkpoint 1 个回答 Voted Best Answer dezso 2012-05-30T01:50:39+08:002012-05-30T01:50:39+08:00 梳理文档,我看到以下内容(希望(或肯定)其他人指出意外的错误细节): 有一个单独的服务器进程称为后台写入器,其功能是发出“脏”(新的或修改过的)共享缓冲区的写入。 BW 根据其配置参数执行其工作。它最多写入bgwriter_lru_maxpages脏共享缓冲区,然后bgwriter_delay休息一毫秒。现在,当涉及到checkpoint_segments 日志段(或checkpoint_timeout秒,如果它首先出现)时,它会将所有(剩余的)脏段刷新到数据文件。现在数据库数据在磁盘上具有一致的状态,在日志中也有相应的条目。如有必要,这是后续重做的良好起点。 谁做检查站? 服务器的后台编写器进程自动执行检查点 [...] 至于你的第2点,WAL就是WAL(存放在日志段文件中),数据文件就是数据文件。两者将相互一致但不会合并。
梳理文档,我看到以下内容(希望(或肯定)其他人指出意外的错误细节):
BW 根据其配置参数执行其工作。它最多写入
bgwriter_lru_maxpages
脏共享缓冲区,然后bgwriter_delay
休息一毫秒。现在,当涉及到checkpoint_segments
日志段(或checkpoint_timeout
秒,如果它首先出现)时,它会将所有(剩余的)脏段刷新到数据文件。现在数据库数据在磁盘上具有一致的状态,在日志中也有相应的条目。如有必要,这是后续重做的良好起点。谁做检查站?
至于你的第2点,WAL就是WAL(存放在日志段文件中),数据文件就是数据文件。两者将相互一致但不会合并。