推荐文章 New Blog
SQLITE虚表
SQLite的虚表的机制虚表是一种自定义的扩展,允许用户通过代码定制表的数据结构和数据内容;对于数据库引擎,它和普通表一样,允许进行大多数的sql操作。虚表和普通表的主要不同在于以下几点:1. 其表中的数据的来源不同;对于普通表,来源于数据库的行列值;而对于虚表,来源于用户自定义的函数,可以使数据库中的数据,也可以使其他的外部数据,如:磁盘文件(csv, excel)等;2. 虚表是sqlite的一种高级特性,它的实现基于sqlite module;3. 虚表被用于连接数据库引擎和可变的数据源,分为两种:internals and externals;4. internal modules的数据来自于数据库文件本身,它的主要目的并不是做普通表不能做的,而是作为智能视图,更具扩展性的、更方便的、更快速的...Oct. 21, 2015, 11:12 p.m.作者:zachary分类:数据库阅读(3333)评论(0)
sqlite缓存机制学习
SQLITE的模块性很强,缓存模块也是一样的,SQLITE提供了多种缓存机制可以选择,默认的是Pcache1。SQLITE缓存的管理是通过Pager管理的,下面通过Pcache提供一个接口,开发者可以自己编写自己的缓存策略。默认的缓存机制比较简单,也比较常用,算法使用的是LRU(最近最少使用算法),具体的实现,SQLITE使用了一个Hash表,两个LRU链表。如下图:1、hash表主要是加快对缓存中数据页的查找速度。SQLite是通过页号来进行hash操作的,hash后将其挂到对应的Hash链表上。2、LRU链表有两种,都是双向链表。一种是脏页链表,一个是干净页链表(没有修改过的页)。SQLite对hash表中页进行一次操作,就会将该页放到LRU链表的头部,因为该页是最近最常用到的。对于缓存的使用一般分成3步:1》查找缓存中是否存在该页,存在返回该页,不存在到第二步...Aug. 2, 2015, 10:51 p.m.作者:zachary分类:数据库阅读(1712)评论(0)
WAL模式学习
一、WAL模式优点缺点1、大多数场景下更快。2、读写之间不相互阻塞,更大的并行性。3、磁盘操作更顺序。4、使用更少的fsync()操作,减少系统脆弱的问题。1、需要文件系统支持共享内存2、使用sqlite的进程只能在当前主机上,不能使用网络文件系统3、事务对于单个数据库具有原子性,但对多个不具有。4、WAL模式下,不能更改数据库页大小5、不能使用只读的WAL模式数据库6、对大多数读和少量写会稍微慢一些7、多一个-wal文件和一个-shm共享内存文件8、需要一个额外的checkpoint操作9、对于大的事务,WAL会变慢,wal文件会增大,甚至导致IO或磁盘满的错误二、文件格式2.1、wal文件格式Wal文件的开始是一个wal文件头,后面就是一个个的数据帧。 每一个数据帧都有一个帧头如下所示 每一个数据帧对应着数据库中的一个单个页,并且可以在checkpoint后重用。一...July 15, 2015, 11:44 p.m.作者:zachary分类:数据库阅读(1630)评论(0)