如果我理解正确的话,当我删除一个记录并调用commit时,postgres将更新预写日志(wal)并等待检查点,然后刷新对文件的更改。
我的问题是:
- 有什么方法可以在提交后和postgres检查点之前恢复已删除的记录吗?
- 顺便问一下,为什么这个方法可以减少磁盘写入?wal不是一个附加的日志文件吗?
我找不到任何地方如何做到这一点,而不支付postgres工程师。
如果我理解正确的话,当我删除一个记录并调用commit时,postgres将更新预写日志(wal)并等待检查点,然后刷新对文件的更改。
我的问题是:
我找不到任何地方如何做到这一点,而不支付postgres工程师。
1条答案
按热度按时间fcg9iug31#
对数据文件的更改 * 必须 * 在下一个检查点结束前写入并刷新,但如果需要(或预计)收回页面以便为读入的其他数据腾出空间,也可以提前写入这些更改。一旦刷新了相应的WAL,对数据文件的更改就 * 符合 * 写入条件。
没有用户可用的方法来恢复被删除的记录。你可以强制崩溃,然后干扰恢复过程。但你必须是相当的Maven来完成这个任务。从备份中检索记录,然后重新插入它会更容易。你甚至不需要是一个工程师来完成这个任务。只要有有效的备份(可能包括WAL存档)并知道如何使用它们。或者更好的是,不要提交你不想提交的东西。
该系统是为碰撞安全而设计的,而不是为了减少磁盘写入。