假设您有一个 ACID 数据库。如果没有关于操作顺序的明确保证,您仍然可以根据持久性推断顺序。
例如
- 我插入
x
数据库,语句返回 - 现在我插入
y
- 由于耐用性保证,我知道
x
以前是耐用y
的。
因此,如果发生崩溃,我要么有:
- 没有
x
或y
在数据库中 - 只要
x
x
和y
。_
现在假设一个具有宽松持久性保证的数据库。例如,没有安全模式或 getlasterror 的 MongoDB。
我有什么保证在第二个操作变得持久之前第一个操作是持久的?
请指出我声称这一点的文档部分或适当的测试。
如果发生故障,我的数据库是否可以包含y
但不包含x
?
编辑:
似乎默认(唯一?)存储机制是内存映射文件引擎。如果没有启用日志(现在默认启用),服务器崩溃似乎会导致不一致且无法修复的状态。我想答案就在日记里。