它们要么完全发生,要么根本不发生,即使在系统崩溃或电力故障期间也是如此。所以,没有任何文件被破坏的危险,仅仅是因为在写入到磁盘上的同一时刻电源发生了故障。
码头工人,,,公证人,,,公证客户,,,码头内容信任,,,内容信任,,,电力用户,,,先进 ©2017Docker,Inc. 根据ApacheLicense,版本2.0获得许可。
[图片] 假设在上述步骤3.10中发生电力损失,而数据库更改正在写入磁盘。电力恢复后,情况可能与右图所示的情况类似。我们试图更改数据库文件的三页,但只有一页成功写入。
换句话说,没有试图使直接到磁盘写入交易或电力安全。我们发现,在写入的每个文件上调用fsync()或FlushFileBuffers()会导致直接到磁盘的存储速度比写入SQLite慢10倍或更多。
即使您的操作系统崩溃或电力损失,数据库也是安全的。SQLite的抗崩溃功能已经得到了广泛的研究和测试,并得到数十亿用户的多年实际经验的证明。
如果在扇区处于瞬态状态时发生电力或系统故障,则在恢复后不可能预测其内容。它可以被正确写入,而不是被写入,被随机数据或其任何组合覆盖。
每次交易后的额外WAL同步有助于确保交易在整个电力损失期间持续运行。事务符合或不符合synchronous=FULL提供的额外同步。

扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2026 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059
粤公网安备44030502008569号
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号
