在LevelDB Documentation中提到写入批处理能够为多个操作提供原子性。然而,我只想知道如果应用程序在执行写批处理期间崩溃会发生什么。它会回滚所有更改还是部分提交更改?
我指的是下面的场景,批处理完成执行需要一些时间。 (代码是用Java编写的LevelDBJNI)
WriteBatch batch = db.createWriteBatch();
for(int i=0;i<10000000;i++){
batch.put(("key "+Integer.toString(i)).getBytes(),("value "+Integer.toString(i)).getBytes());
}
System.out.println("Batch Filled");
db.write(batch); //takes around 5s -- what if system crashes here??
答案 0 :(得分:0)
WriteBatch保证磁盘上全部或全部结束。这是在进程崩溃的情况下。如果文件系统崩溃 - 断电 - 我认为没有这样的保证。