SQLite是否锁定数据库文件读取?

我正在调查sqlite作为存储引擎,我很想知道sqlite是否锁定数据库文件读取。

我关心的读性能,因为我计划的项目将有很少的写,但许多读。如果数据库锁定,是否有措施可以采取(如内存缓存)来减轻这个?

Wikipedia page

Several computer processes or threads may access the same database without problems. Several read accesses can be satisfied in parallel.

更确切地说,从FAQ

Multiple processes can have the same database open at the same time. Multiple processes can be doing a SELECT at the same time. But only one process can be making changes to the database at any moment in time,however.

然而,对数据库的单个写入会锁定数据库一段时间,所以没有什么可以访问它(甚至没有读取)。详细信息可以在File Locking And Concurrency In SQLite Version 3找到。基本上读取数据库没有问题,除非有人想立即写入数据库在这种情况下,DB在执行该事务所需的时间内被独占锁定,并且该锁随后被释放。然而,关于在PENDING或EXCLUSIVE锁定的时候对数据库的读取操作究竟是什么的细节是很少的。我的猜测是,他们或者返回sqlITE_BUSY或阻塞,直到他们可以读取。在第一种情况下,不应该太难以再次尝试,特别是如果你期望几乎没有写入。

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能