![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 95
麦峰强1
这个作者很懒,什么都没留下…
展开
-
Sqlite优化v2
如果我们在项目中有使用 SQLite,那么下面这个SQLiteDatabaseLockedException就是经常会出现的一个问题。归根到底是因为并发导致,而 SQLite 的并发有两个维度,一个是多进程并发,一个是多线程并发。下面我们分别来讲一下它们的关键点。多进程并发SQLite 默认是支持多进程并发操作的,它通过文件锁来控制多进程的并发。SQLite 锁的粒度并没有非常细,它针对的是整个 DB 文件。简单来说,多进程可以同时获取 SHARED 锁来读取数据,但是只有一个进程可以获取 EXCL转载 2022-07-18 19:07:18 · 897 阅读 · 0 评论 -
Sqlite内核
在对数据进行修改操作之前,先要获取数据库文件的ReservedLock,ReservedLock和sharedlock的相似之处在于,它们都允许其它进程对数据库文件进行读操作。每个数据库连接都有自己私有的空间,所以页面的变化只对该连接可见,而对其它连接的数据仍然是磁盘缓存中的数据。从OS的角度来看,当一个文件创建时,大多数OS(Windows,Linux,MacOSX)不会向磁盘写入数据,新创建的文件此时位于磁盘缓存中,之后才会真正写入磁盘。如图,日志文件位于OS磁盘缓存中,而不是位于磁盘。...转载 2022-07-18 19:04:47 · 213 阅读 · 0 评论