Sqlite - 将插入操作阻止读取吗?

时间:2011-11-01 13:13:58

标签: multithreading performance sqlite locking blocking

我的sqlite db很简单:一个表,两列。一列是图像的URL,另一列是图像的字节。

然后我有两个线程。

一个线程(写线程)正在下载一个非常大的图像(比方说5MB)。当下载图像时,线程插入url&将图像的字节放入db。

另一个线程(阅读线程)是一个循环中每1秒随机查询一个图像。

我的问题是:

“写作线程”有时会阻止“阅读主题”吗?

我已设置PRAGMA locking_mode=NORMAL;

我有这个问题,因为我遭受了阻塞,并且如果我将locking_mode设置为NORMAL,则阻塞不应该存在。

我的意思是,我希望它可能是这样的:我有一个后台线程只是以最低优先级处理写入。然后即使插入花费很多时间,比如10秒,读取线程也不会受到影响。

有没有办法做到这一点?或者我错过了什么?

感谢

1 个答案:

答案 0 :(得分:4)

使用WAL mode