【发布时间】:2010-07-09 19:19:22
【问题描述】:
伙计们 我正在使用 sqlite 实现基于文件的队列 (see my earlier question)。我有以下线程在后台运行:
- thread-1 将内存结构清空到“队列”表中(插入到“队列”表中)。
- 用于读取和“处理”“队列”表的线程 1 每 5 到 10 秒运行一次
- thread-3 - 运行频率非常低,从“队列”表中清除不再需要的旧数据,并且还运行真空,因此数据库文件的大小仍然很小。
现在我想要的行为是让每个线程获得它需要的任何锁(如果可能,等待超时)然后完成事务。如果线程不并发运行也没关系 - 重要的是事务一旦开始不会由于“锁定”错误(例如“数据库已锁定”)而失败。
我查看了transaction documentation,但似乎没有“超时”功能(我使用的是 JDBC)。连接中的超时时间可以设置大吗?
我能想到的一个解决方案(未尝试过)是拥有一个最多 1 个连接的连接池。因此,一次只能连接一个线程,因此我们不应该看到任何锁定错误。有更好的方法吗?
谢谢!
【问题讨论】:
标签: sqlite jdbc locking connection-pooling