摘要:
数据库支持三种线程模式Single-thread. In this mode, all mutexes are disabled and SQLite is unsafe to use in more than a single thread at once.Multi-thread. In this mode, SQLite can be safely used by multiple thre... 阅读全文
摘要:
链接概述在3.7.0以后,WAL(Write-Ahead Log)模式可以使用,是另一种实现事务原子性的方法。WAL的优点在大多数情况下更快并行性更高。因为读操作和写操作可以并行。文件IO更加有序化,串行化(more sequential)使用fsync()的次数更少,在fsync()调用时好时坏的机器上较为未定。缺点一般情况下需要VFS支持共享内存模式。(shared-memory primit... 阅读全文
摘要:
https://github.com/yapstudios/YapDatabase/wiki/SQLite-version-(bundled-with-OS)https://github.com/yapstudios/YapDatabase/blob/master/YapDatabase/YapDatabase.m+ (NSString *)sqliteVersionUsing:(sqlite... 阅读全文
摘要:
英文地址文章参考简介支持事务的数据库系统如sqlite的一个重要特性是原子提交(atomic commit)。也就是在一个事务中进行的对数据库的写操作要么全部执行,要么全部不执行。看起来像是对数据库不同部分的写操作时瞬时发生的。实际上,对磁盘内容的改变需要一段时间,写操作不可能是瞬时发生的。为此,sqlite内部有一套逻辑保证保证事务操作的原子性,即使系统crash或掉电也不会破坏原子性。这篇文章... 阅读全文
摘要:
reserved state进入reserved state以后,sqlite可以修改数据库中的内容,不过把修改以后的内容写到pager的缓存里,大小由page cache指定。进入这个状态以后,pager开始初始化日志文件,用户回滚和异常恢复。(其实就是把日志中的文件内容拷贝到数据库文件中去)这种机制使得数据库在进行写操作时可以同时进行读操作。不过由于只有一个reserved或exclusiv... 阅读全文
摘要:
每一个数据库连接可以包括多个数据库文件,一个主数据库文件和attached的几个数据库文件。每一个数据库文件都有自己的B-tree和pager。数据库连接(connection)和事务(transaction)的关系1. 每一个数据库连接都必须在事务下进行操作2. 每一个数据库连接不同同时打开多个事务。同一个数据库文件可以被多个进程同时访问。 阅读全文