
SQLite
dreamcs
lnsjc321@126.com
展开
-
SQLite文件格式初步分析
SQLite版本:3.14.1总体结构SQLite数据库文件由多个页面组成,每个页面的大小相同。这方便了程序读取页面。页面结构首页面结构如下:文件头大小为100个字节。只有首页面有文件头。页面头大小为8个字符,或12个字节。Cell指针数组每个cell数组元素大小为2原创 2016-09-15 14:21:40 · 4456 阅读 · 0 评论 -
在Windows下编译多源码文件版本SQLite
编译环境操作系统:Win7 32SQLite版本:3.14.1编译器:VS20131、下载多源文件版本的SQLite源码此处使用的源码包为sqlite-src-3140100.zip2、安装TCL 8.5版本此处使用的安装包为ActiveTcl8.5.18.0.298892-win32-ix86-threaded.exe3、设置TCL路径到P原创 2016-09-03 13:54:44 · 1776 阅读 · 0 评论 -
SQLite文件格式初步分析之varint
varint为变长整数。长度为1到9个字节。最大可表示64位整数。 使用varint表示整数的原因:大多数情况下,整数数值比较小,如果使用64位整数保存的话,会浪费空间。 Varint格式如下(源于源码util.c):A = 0xxxxxxx 7位数据,一个标志位(这里就是高位的0)B = 1xxxxxxx 7位数据,一个标志位(这里就是高位的原创 2016-10-01 11:10:03 · 939 阅读 · 0 评论 -
SQLite文件格式初步分析之记录格式
表记录的格式 表的一条记录保存在cell中。一个保存记录的cell的格式如下图所示: 实例:以company表中的一条记录为例。见下图:表结构的保存格式sqlite_master表结构 创建、定义表结构的SQL语句,保存的SQLite内部使用的表sqlite_master中。Sqlite_master的表结构如下:CREATE TA原创 2016-10-01 15:44:57 · 1625 阅读 · 0 评论 -
SQLite使用JSON扩展
一、介绍 SQLite3.9.0之后的版本,添加了JSON扩展。在表中可以保存JSON类型。实际上SQLite将JSON类型的字段作为文本字段对待。但可对定义为JSON的字段,调用特点的函数,来实现JSON内容的增删改查。不用再自己用程序实现相似的增删改查操作。 SQLite的JSON扩展,定义在json1.c中。此文件位于源码路径下的ext/misc中。 SQLit原创 2017-03-08 14:58:35 · 26672 阅读 · 2 评论 -
SQLite创建表过程分析
创建表的过程总体分为两步:SQL编译过程,SQL执行过程。下图的sqlite3_prepare_v2分支为SQL编译过程。sqlite3_step分支为SQL执行过程。SQLite创建一个表的过程很复杂。此图忽略了很多细节。此图仅概括了创建表的宏观过程。创建一个表都如此复杂,执行INSERT,SELECT等SQL应该会更复杂。这注定了SQL类型的数据库,不能满足高频写入的需求。原创 2017-03-28 09:32:22 · 826 阅读 · 0 评论 -
使用Lemon编写最简单的SQL解析器
使用SQLite自带的Lemon解析器生成工具,制作最简单的解析器。以解析器仅解析Create table语句。以下的生成解析器所需的.y文件。// All token codes are small integers with #defines that begin with "TK_"%token_prefix TK_// The type of the data att原创 2017-03-28 09:40:59 · 2478 阅读 · 0 评论 -
SQLite虚拟数据库引擎(一 )
文章主体为SQLite文档中的vdbe.html文档。此文介绍了SQLite虚拟机的细节。但此文档并没有及时更新。文档中描述的虚拟机是SQLite老版本的虚拟机。老的虚拟机基于栈。新版本的虚拟机基于寄存器。差别较大。基于本人对寄存器机制的理解,更新了部分文档。如果错误,请指正。原创 2017-03-27 14:08:20 · 2414 阅读 · 0 评论