在我的应用程序中,有一个线程不断地在事务中接收和写入数据到SQLite数据库,然后在事务完成时提交事务。
同时,当应用程序运行长时间运行的查询时,写入线程似乎被阻止,并且没有数据被写入。每种方法都使用相同的连接对象。
有没有办法做一个等效的SQL(nolock)查询,或者其他一些方法让我的读取没有锁定我的任何表?
谢谢!
答案 0 :(得分:0)
您有一个概念错误。 SQLite以这种方式工作:
传统的File / Open操作执行sqlite3_open()和 执行BEGIN TRANSACTION以获得对内容的独占访问权。 文件/保存执行COMMIT后跟另一个BEGIN TRANSACTION。使用 事务保证对应用程序文件的更新 原子的,持久的,孤立的和一致的。
所以你不能以这种方式工作,因为这不是真正需要工作的方式。我认为你必须重新考虑算法以使用SQLite。这就是你的连接被阻止的原因。
更多信息: