【问题标题】:HSQLDB persist in-memory databaseHSQLDB 持久化内存数据库
【发布时间】:2015-03-25 04:00:30
【问题描述】:

我正在使用内存中的 hsqldb 数据库和 JDBC 驱动程序。

现在,我正在寻找一种方法来保存此数据库,以便在应用程序重新启动后重新加载。我想出了以下选项:

  1. 使用 sql 命令“SCRIPT ”导出 .script 文件(link)
  2. 将所有语句记录到日志文件中。

选项 2 有效,但在我看来有点难看。选项 1 的脚本导出也可以,但我似乎无法将 .script 文件恢复到内存数据库中。

感谢您的任何建议。

【问题讨论】:

  • 我有点困惑,因为如果您知道要持久化数据库,为什么不将连接 URL 从 mem: 更改为 file: 并指定所需的 要存储的数据库?
  • 出于性能原因,我正在使用 mem 数据库。
  • 没有速度惩罚。当您想要持久化 .script 文件时,您可以关闭对文件的日志记录:数据库并发出 CHECKPOINT for SHUTDOWN。
  • @fredt 这很有趣,因为我肯定体验到不同的速度(从数据库读取)。如果我只将 DriverManager 连接字符串从 jdbc:hsqldb:mem:xxx 更改为 jdbc:hsqldb:file:xxx,速度会降低。我正在使用内存表。为什么会这样?
  • 使用 files_readonly=true 属性连接到您作为脚本文件导出的数据库。见hsqldb.org/doc/2.0/guide/…

标签: jdbc persistence hsqldb in-memory-database


【解决方案1】:

第一个选项是正确的。

使用SCRIPT <path> 语句导出数据库后,可以将其导入内存数据库。

您需要使用只读的file: URL 连接到脚本数据库

例如,如果您将数据库导出到d:/dbfiles/mydb.script,您将在指定目录中获得mydb.script 文件。要连接到此数据库,请使用file:d:/dbfiles/mydb;files_readonly=true

上面的方法和mem:database绝对没有速度上的区别。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-29
    • 2011-05-06
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2017-08-09
    相关资源
    最近更新 更多