multithreading - SQLite-插入操作会阻止读取吗?

标签 multithreading performance sqlite locking blocking

我的sqlite数据库很简单:一张表,两列。一列是图片的网址,另一列是图片的字节。

然后,我有两个线程。

一个线程(写线程)正在下载非常大的图像(例如5MB)。并且在下载图像时,线程将图像的url和字节插入db中。

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

我的问题是:

有时,“编写线程”会阻止“阅读线程”吗?

我已经设置了PRAGMA locking_mode=NORMAL;

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

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

有什么办法吗?还是我想念的东西?

谢谢

最佳答案

使用WAL mode

关于multithreading - SQLite-插入操作会阻止读取吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966973/

相关文章:

Java ExecutorService 关闭现在需要很长时间

c++ - 使 getter 和 setter 内联是一种好习惯吗?

ios - SQLite 插入错误的值。开发者

mysql - 如何在不编写与子查询相同的查询的情况下在 WHERE 子句中使用实际行数 (COUNT(*))?

c# - 处理在辅助线程过程中发生的未处理错误

java - 如何在 x 秒后处理 JOptionPane

c# - Entity Framework 查询中 && 和 where 条件的区别

asp.net-mvc - 将用户对象传递给 Controller ​​操作会导致很大的延迟

sql - 嵌套,分组Sqlite语法?

c# - System.Collections.Queue<T>、线程、锁定和同步