微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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或阻塞,直到他们可以读取。在第一种情况下,不应该太难以再次尝试,特别是如果你期望几乎没有写入。

原文地址:https://www.jb51.cc/sqlite/198126.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐