在执行LevelDB批处理期间应用程序崩溃时会发生什么?

时间:2017-09-01 04:19:46

标签: transactions atomicity leveldb

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??

1 个答案:

答案 0 :(得分:0)

WriteBatch保证磁盘上全部或全部结束。这是在进程崩溃的情况下。如果文件系统崩溃 - 断电 - 我认为没有这样的保证。