0

换句话说,我必须将 CHECKPOINT 与另一个查询同步还是可以简单地在专用线程中定期执行它?

我的数据库不写日志。如果数据在崩溃时丢失,我可以,但我确实想定期刷新它并确保在应用程序终止时刷新它。

编辑

以下项目描述了我的方案:

  1. 使用嵌入式 hsqldb 引擎运行一系列简短的单元测试,将项目插入到专用数据库中。
  2. 将 hsqldb 作为连接到单元测试期间创建的数据库之一的独立服务器运行。
  3. 打开SQL Workbench/J尝试连接到正在运行的独立 hsqldb 服务器。

SQL Workbench/J 根本没有显示任何表。但是,如果我在插入所有记录后添加 CHECKPOINT,那么一切都很好。

4

1 回答 1

1

HSQLDB 总是安全地执行检查点。它使用一个单独的线程等待所有连接都提交,然后锁定数据库并执行检查点。

CHECKPOINT 可用于减少崩溃后重新启动数据库所需的时间。这不适用于已禁用日志的数据库。

如果您不编写日志,则可能不需要检查点。在这种情况下使用检查点是为了回收已删除 lob 的空间(在 2.3.0 版本中)。它还写出所有数据。

如果要在测试结束时刷新数据库,则可以改为执行 SHUTDOWN。

于 2013-04-10T19:04:17.413 回答