如何使用Xodus以编程方式将磁盘刷新到磁盘?

时间:2017-04-04 23:19:38

标签: xodus nosql

我试图在没有设置配置持久写入的情况下刷新磁盘事务。

可以命令仅针对特定事务进行刷新吗?

1 个答案:

答案 0 :(得分:1)

说到Environments API,无法将特定事务配置为持久。

有一个解决方法:您可以在刷新或提交事务后手动调用EnvironmentImpl#flushAndSync()方法。该方法刷新未刷新的数据并强制OS将修改的文件和目录结构同步到存储设备。但是,在调用EnvironmentImpl#flushAndSync()方法之前刷新/提交事务之后,可以进行另一个事务并且可以进行并行执行。要解决竞争,可以使用commit hook。对于给定的Transaction txnEnvironmentImpl env,请定义以下提交挂钩:

txn.setCommitHook(new Runnable() {
    @Override
    public void run() {
        env.flushAndSync();
    }
});

EnvironmentImpl#flushAndSync()方法暴露给API可能是有意义的。