我正在使用HSQLDB,包含单个DB和4个表。 我正在使用commons apache池数据源。
方案如下:
表1-3是一个事务中的更新,因此在同一个连接(不同的sql语句)上。他们使用auto commit false并调用executeUpdate()和executeBatch()。在此交易结束时,有时(不是每次)都会调用“检查点”。
表4与其他人同时更新,但使用其他连接。更新批处理,然后始终调用“检查点”。在此检查点中,所有内容都会挂起,调用永远不会返回,并且无法访问此DB中的任何表。在日志文件中,我看到第4个表的“检查点”永远不会到达。
是否存在使用auto commit = false的打开连接时无法执行检查点?
可能是一个僵局?
我不知道问题是什么...... 没有这张表#4一切正常。
答案 0 :(得分:1)
您可以在有其他打开的连接时执行CHECKPOINT。在锁定数据库和执行检查点之前,执行CHECKPOINT的连接会等待所有其他连接提交。
因此,在执行检查点之前,必须完成所有操作并提交。