【发布时间】:2018-06-07 11:12:46
【问题描述】:
我在这里找到了报价
PostgreSQL 是依赖预写日志 (WAL) 的数据库之一 – 所有更改都首先写入日志(更改流),并且仅 然后到数据文件。这提供了耐用性,因为在 崩溃数据库可能使用 WAL 来执行恢复 - 读取更改 来自 WAL 并将它们重新应用到数据文件中。
来自这篇文章https://blog.2ndquadrant.com/basics-of-tuning-checkpoints/
假设有 WAL 文件继续跟踪查询
UPDATE page SET view_count = view_count + 1;
我可以想象,postgres 已经将此 WAL 应用于 DB 但它在应用后立即崩溃。
DB 还没有更新最新的 WAL 位置,也没有删除 WAL 日志文件。
当 DB 启动时,它会进行恢复并再次重新应用此 WAL,不是吗?
数据库中的这个最终值会变成view_count + 2 吗?
请指教
【问题讨论】:
标签: postgresql wal