支持事务
有限的事务并发
多个读事务
一个排他写事务
线程安全
单文件
支持SQL92的一个大子集
不支持
foreign key
大部分alter table
trigger
right & full outer join
更新view
grant & revoke
front-end
sql -> tokenizer -> parser -> code-generator -> bytecode
code-generator
遍历parse-tree, 生成等价的bytecode
sqlite3_prepare
函数实现了frontend
back-end
bytecode -> virtual-machine -> b+tree -> pager -> os-interface -> posix-library
pager
缓存
页管理/文件系统
文件锁/事务日志
nfs问题
sqlite使用系统文件锁控制事务并发, 网络文件系统出现网络分区时会出问题(nfs的文件锁实现有问题)
数据库最大2T字节(2^41)
100多万页时,内存开销会影响服务(pagesize=1024字节)
每页在内存中有一个bit
表/索引最大有2^64-1个元素
单条记录最大2^30字节