sqlite
qiuxin315
这个作者很懒,什么都没留下…
展开
-
SQLite学习(一) - VS2008编译SQLite3070602
使用SQLite版本sqlite-3070602. 下载已经预编译处理过的版本sqlite-preprocessed-3071100.zip, 导入.h, .c文件, 直接编译会有一些错误,做如下改动就能编译通过1. 移除tclsqlite.c, tclsqlite.c用于生成基于TCL的API,如果需要编译,则需要另外下载tcl.h头文件;2. fts3*.c是全文索引的模块;打转载 2013-07-03 21:34:30 · 784 阅读 · 0 评论 -
SQLite学习(七) - 如何实现原子提交
Atomic commit原子提交的实现1. 初始状态 2. 请求一个read lockShared lock是加在OS buffer, 不是直接加在DISK上3. 然后从disk读取data到OS Buffer, 并存到User space中4. 请求一个reversed lock表示有更改数据库的意向, 真正的改转载 2013-07-03 21:43:23 · 722 阅读 · 0 评论 -
SQLite学习(三) - SQLite源代码文件结构
SQLite Version3.3.6源代码文件结构 文件名称大小byte备注APImain.c35414SQLite Library的大部分接口 legacy.c3734sqlite3_exec的实现 table.c5464t转载 2013-07-03 21:37:53 · 956 阅读 · 0 评论 -
SQLite学习(二) - SQLite逻辑结构
SQLite主要由3个部分组成 1、接口(Interface)接口由SQLite C API组成,也就是说不管是程序、脚本语言还是库文件,最终都是通过它与SQLite交互的(我们通常用得较多的ODBC/JDBC最后也会转化为相应C API的调用)。2、编译器(Compiler)在编译器中,分词器(Tokenizer)和分析器(Parser)对SQL进行语法检转载 2013-07-03 21:35:25 · 1113 阅读 · 0 评论 -
SQLite3源码在Windows及WinCE平台下的编译方法
SQLite3源码在Windows及WinCE平台下的编译方法首先从SQLite官方网站http://www.sqlite.org/download.html 下载最新的源代码,目前最新的版本是V3.7.11(2012年3月25日星期日)。需要下载在源码如下:sqlite-amalgamation-3071100.zip,sqlite-dll-win32-x86-307转载 2013-07-03 21:33:22 · 826 阅读 · 0 评论 -
SQLite学习(十一) - SQLite C编程接口
老版本的SQLite编程接口很简单,只有5个接口。随着新功能的增加,新版本的SQLite有185个编程接口。 但是不用担心,核心API还是很容易理解的。 1. 先来介绍核心对象和接口(1) 数据库连接对象 sqlite3(2) 执行语句对象 sqlite3_stmtsqlite3_stmt不是必须的, 因为接口sqlite3_exec或sqlite3_get转载 2013-07-03 21:46:48 · 641 阅读 · 0 评论 -
SQLite学习(五) - 异步I/O的实现 sqlite3async.c
一般情况下,当我们的程序有I/O 操作需要写磁盘时,程序会等待I/O完成后才把程序控制还给用户。由于I/O是相对比较慢的,所以这有可能会成为性能瓶颈。 SQLite的异步I/O使用一个单独的线程完成I/O。 虽然这样没有减少系统资源的使用,但是控制权立刻返回给用户,更好的用户体验。1. 数据库ACID中的D使用异步I/O带来的一个问题就是失去了数据库的持久性(Durable) 特性转载 2013-07-03 21:41:25 · 2857 阅读 · 0 评论 -
SQLite学习(十) - 多个database文件事务的提交
SQLite允许一个database connection 通过ATTACH DATABASE命令连接到多个数据库。当一个事物需要更新多个database文件时,也要保证atomic commit1. 每个database文件有各自的rollback journal文件2. 创建master journal 文件,master journal文件名与database file文件名转载 2013-07-03 21:45:55 · 1352 阅读 · 0 评论 -
SQLite学习(九) - 虚拟机指令2
本文介绍SQLite虚拟机指令的版本是2.8.0. SQLite3 以及以后版本的虚拟机概念上是一样的。 但是一些操作码,操作数用法,个数有所改变,算法也有所不同。VDBE虚拟机语言,类似汇编语言,VDBE的每天指令由一个opcode 和3个operand组成(SQLite3以后有5个)。 下面看个例子来学习。1 INSERT SQLCREATE TABLE examp(one t转载 2013-07-03 21:44:53 · 761 阅读 · 0 评论 -
SQLite学习(六) - SQLite的临时文件
SQLite现在使用7中临时文件 Rollback journals Master journals Statement journals TEMP databases Materializations of views and subqueries Transient indices Transient databases u转载 2013-07-03 21:42:04 · 1485 阅读 · 0 评论 -
SQLite学习(四) - SQLite源代码文件结构2
SQLite结构以及代码 1. Interface(main.c, legacy.c, and vdbeapi.c)对于开发人员开放的结构都实现在main.c, legacy.c, and vdbeapi.c。 其他一些比如sqlite3_get_table() - table.csqlite3_mprintf() - printf.转载 2013-07-03 21:38:50 · 1116 阅读 · 0 评论 -
SQLite学习(八) - 虚拟机指令1
为了执行SQL, SQLite首先解析分析SQL,生成一个由VM操作码组成的程序,类似汇编语言。SQLite虚拟机的实现代码在vdbe.c。 每个opcode的功能可以直接通过阅读源代码中的注释。SQLite每条指令的格式是: Opcode p1 p2 p3 p4 p5一个opcode以及最多5个 operands(P1, P2 P3, P4, and P5), 有些操作码使用所有的5转载 2013-07-03 21:44:15 · 1027 阅读 · 0 评论