同时连接到HSQLDB - 呼叫永远不会返回

时间:2013-08-29 05:39:47

标签: java database hsqldb

我正在使用HSQLDB,包含单个DB和4个表。 我正在使用commons apache池数据源。

方案如下:

表1-3是一个事务中的更新,因此在同一个连接(不同的sql语句)上。他们使用auto commit false并调用executeUpdate()和executeBatch()。在此交易结束时,有时(不是每次)都会调用“检查点”。

表4与其他人同时更新,但使用其他连接。更新批处理,然后始终调用“检查点”。在此检查点中,所有内容都会挂起,调用永远不会返回,并且无法访问此DB中的任何表。在日志文件中,我看到第4个表的“检查点”永远不会到达。

是否存在使用auto commit = false的打开连接时无法执行检查点?

可能是一个僵局?

我不知道问题是什么...... 没有这张表#4一切正常。

1 个答案:

答案 0 :(得分:1)

您可以在有其他打开的连接时执行CHECKPOINT。在锁定数据库和执行检查点之前,执行CHECKPOINT的连接会等待所有其他连接提交。

因此,在执行检查点之前,必须完成所有操作并提交。