【发布时间】:2013-08-29 05:39:46
【问题描述】:
我将 HSQLDB 与单个 DB 和 4 个表一起使用。 我正在使用 commons apache pooled 数据源。
场景如下:
表 1-3 在一个事务中更新,因此在同一个连接上(不同的 sql 语句)。他们使用自动提交 false 并调用 executeUpdate() 和 executeBatch()。在此事务结束时,有时(不是每次)都会调用“检查点”。
表 4 与其他表同时更新,但使用另一个连接。更新批次,然后总是调用“检查点”。在这个检查点,一切都挂起,调用永远不会返回,并且无法访问该数据库中的任何表。在日志文件中,我看到第 4 个表的“检查点”永远不会到达。
当有一个使用 auto commit = false 的打开连接时,我无法执行检查点吗?
可能是死锁?
我不知道是什么问题... 没有这张表 #4 一切正常。
【问题讨论】:
-
当你省略“检查点”时会发生什么(无论如何都不需要)
-
没有它,其余代码似乎都在工作,我必须添加检查点,因为我希望将其插入数据库,而不是缓存。
-
HSQLDB 会在需要时将数据刷新到磁盘。只要确保你
SHUTDOWN引擎正确。 -
它需要一段时间才能刷新,我可能会丢失数据。出于性能原因,我不使用日志。