在事务提交之前WAL缓冲区填充

时间:2016-10-05 16:55:39

标签: postgresql logging recovery

我一直在使用Postgresql中的崩溃恢复机制,这打击了我。在WAL日志记录中,在事务START中,基于查询,WAL缓冲区充满了XLOG记录。在事务COMMIT中,WAL缓冲区被刷新。现在,假设我开始一系列插入事务。当现有的WAL段被填满时,它会创建新的。但是,当我进行批量插入或复制大量数据或某些东西(比如4-5GB),并且在事务提交之前WAL缓冲区(1-2GB)被填满时会发生什么?在这种情况下,WAL会发生什么?

1 个答案:

答案 0 :(得分:3)

当WAL缓冲区已满时,它们将刷新到磁盘。没有任何东西可以说WAL缓冲区只能在事务提交时刷新。重要的是,在将事务报告为已提交(假设为同步提交)之前,将刷新与事务有关的所有WAL记录。但反之则不然:在提交事务之前可以刷新WAL记录。