当前位置:  开发笔记 > 前端 > 正文

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

如何解决《SQLite是否在读取时锁定数据库文件?》经验,为你挑选了2个好方法。

我正在调查SQLite作为存储引擎,并且很想知道SQLite是否在读取时锁定数据库文件.

我担心读取性能,因为我计划的项目写入很少,但许多读取.如果数据库确实锁定了,是否可以采取措施(例如内存缓存)来缓解这个问题?



1> 小智..:

如果将数据库日志模式设置为"预写日志"(请参阅​​:http://www.sqlite.org/wal.html),则可以在读取时避免锁定.



2> Joey..:

从其维基百科页面:

几个计算机进程或线程可以毫无问题地访问同一个数据库.可以并行地满足几个读访问.

更确切地说,从其FAQ:

多个进程可以同时打开同一个数据库.多个进程可以同时执行SELECT.但是,只有一个进程可以随时对数据库进行更改.

然而,在数据库中单次写入确实锁定短时间的数据库,以便没有任何东西可以在所有访问它(甚至不读).详细信息可以在SQLite版本3中的文件锁定和并发中找到.除非有人想立即写入数据库,否则基本上读取数据库是没有问题的.在这种情况下,DB将专门锁定执行该事务所花费的时间,之后释放锁定.但是,在PENDING或EXCLUSIVE锁定时对数据库的读取操作的确切细节很少.我的猜测是,他们要么返回SQLITE_BUSY要么阻止他们才能阅读.在第一种情况下,再次尝试不应该太难,特别是如果你期望很少写.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有