0

在我的应用程序中,有一个线程在事务中不断地接收数据并将数据写入 SQLite 数据库,然后在完成后提交事务。

同时,当应用程序运行长时间运行的查询时,写入线程似乎被阻塞并且没有数据被写入。每个方法都使用相同的连接对象。

有没有办法做一个等效的 SQL (nolock) 查询,或者其他方式让我的读取不会锁定我的任何表?

谢谢!

4

1 回答 1

0

你有一个概念错误。SQLite 以这种方式工作:

传统的文件/打开操作执行 sqlite3_open() 并执行 BEGIN TRANSACTION 以获得对内容的独占访问。File/Save 执行 COMMIT,然后执行另一个 BEGIN TRANSACTION。事务的使用保证了对应用程序文件的更新是原子的、持久的、隔离的和一致的。

所以你不能以这种方式工作,因为那样真的不需要工作。我认为您必须重新考虑使用 SQLite 的算法。这就是您的连接被阻止的原因。

更多信息:

使用时。

常问问题

在 SQLite 上使用线程:避免它们!

于 2012-08-15T21:18:29.670 回答