SQLIte读/写争用

时间:2012-08-15 20:30:39

标签: sqlite system.data.sqlite

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

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

  

传统的File / Open操作执行sqlite3_open()和   执行BEGIN TRANSACTION以获得对内容的独占访问权。   文件/保存执行COMMIT后跟另一个BEGIN TRANSACTION。使用   事务保证对应用程序文件的更新   原子的,持久的,孤立的和一致的。

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

更多信息:

When use it.

FAQ

Using threads on SQLite: avoid them!