【问题标题】:Disable WAL in OrientDB through Java API通过 Java API 在 OrientDB 中禁用 WAL
【发布时间】:2017-11-29 16:36:03
【问题描述】:

我们有一个 OrientDB 图形数据库和一个每日调度程序,它使用 Java API 在数据库中执行大量插入。出于这个原因,我们希望在执行这些插入时从 Java 代码中禁用 WAL,否则 WAL 文件的大小将在短时间内变得巨大。

我们已经知道可以通过编辑一些 OrientDB 配置来永久禁用 WAL,但我们不想做出这样的选择。

我们看到OrientDB的github仓库有一个已关闭的issue,建议如下解决方案:

private void reopenWithWALSetTo(final boolean useWAL) {
    db.getStorage().close(true, false);
    db.close();
    OGlobalConfiguration.USE_WAL.setValue(useWAL);
    db = new ODatabaseDocumentTx(dbURL);
    db.open("admin", "admin");
}

问题是我们在打开与数据库的连接时没有使用 ODatabaseDocumentTx 的实例。事实上,由于我们使用的是图形数据库,所以我们使用 OrientGraphFactory 的方式如下:

factory = new OrientGraphFactory("url", "username", "password");
graph = factory.getTx();

可以通过以下方式获取ODatabaseDocumentTx的实例:

db = graph.getRawGraph();

但是,在关闭 ODatabaseDocumentTx 的实例后,无法重新打开与我们的图形数据库的连接。

有什么建议吗?

【问题讨论】:

    标签: orientdb wal


    【解决方案1】:

    您可以为一些不需要可靠性的操作禁用日志 (WAL),使用此 Java 选项启动 OrientDB:

    -Dstorage.useWAL=false
    

    https://orientdb.com/docs/last/Write-Ahead-Log.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-27
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多