Hsqldb-进程崩溃时数据如何持久化

Posted

技术标签:

【中文标题】Hsqldb-进程崩溃时数据如何持久化【英文标题】:Hsqldb-How data will persist when process crashes 【发布时间】:2011-09-06 12:46:00 【问题描述】:

我希望数据应该在 hsqldb 数据文件中提交,而进程崩溃而不记录到日志文件。我设置了一个命令“SET FILES WRITE DELAY FALSE”,但它需要启用日志文件来保存数据。因为日志记录会产生性能影响,我不想要它。所以有什么方法可以实现这个目标。

登录应用程序有什么影响。

提前致谢, 阿尼尔

【问题讨论】:

【参考方案1】:

HSQLDB 默认将数据写入 .log 文件。此 .log 文件用于在发生崩溃时进行恢复。

当设置SET FILES WRITE DELAY FALSE 时,引擎会在每次提交时对 .log 文件执行文件同步。性能影响的原因是文件同步操作。此设置对测试很有用,当许多更改被快速写入并且过程始终存在时。对于许多应用程序来说,这不是必需的,因为默认情况下,如果已写入新记录,则每 0.5 秒对 .log 文件执行一次同步。这可以减少到 100 毫秒,而不会对性能产生很大影响。

您可以使用SET FILES LOG FALSE 语句关闭登录并执行批量插入或更新,但不建议将其作为默认设置。

在任何时候,包括关闭日志记录时,您都可以执行显式 CHECKPOINT 以将所有数据提交到 .data 和 .script 文件。

【讨论】:

以上是关于Hsqldb-进程崩溃时数据如何持久化的主要内容,如果未能解决你的问题,请参考以下文章

hsqldb休眠持久化@Lob

HSQLDB - 如何设置 .lobs 文件编码?

POD崩溃时持久卷声明中的容器数据

嵌入式 HSQLDB 将数据持久化到文件中

运行程序后文件数据库中没有模式通过休眠持久化到 hsqldb:file

无法使用 JPA 2.0、Spring 2.5.6、Hibernate 3.6.1 和 Maven 在 HSQLDB 中持久化