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

前端之家收集整理的这篇文章主要介绍了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相关文章