SQLite剖析系列
Dave888Zhou
大处着眼,小处着手;群居守口,独居守心。
展开
-
SQLite剖析(1):功能特性
本文整理自SQLite官网上的文档http://sqlite.org/sitemap.html。 SQLite是遵守ACID的轻型数据库引擎,它包含在一个相对小的C库中。它是D.RichardHipp创建的公有领域项目。SQLite第一个Alpha版本诞生于2000年5月,至今已经有12个年头,当前版本为3.7.14。不像常见的客户端/服务器结构范例,SQLite引擎不是个程序与之通信的翻译 2012-11-11 19:20:31 · 6985 阅读 · 0 评论 -
SQLite剖析(8):原子提交原理
英文原文在这里:http://sqlite.org/atomiccommit.html。 本来想翻译一下,后来发现网上已经有翻译版本了,可参考http://hi.baidu.com/huangqishang/item/30d3a00998df8f18ebfe38b6。这里就不用重复劳动了。其实大部分内容在“锁和并发控制”这一节中已经讲到了。翻译 2012-11-24 21:14:29 · 1991 阅读 · 0 评论 -
SQLite剖析(7):锁和并发控制
本文整理自http://sqlite.org/lockingv3.html。 在SQLite中,锁和并发控制机制都是由pager.c模块负责处理的,用于实现ACID(Atomic, Consistent, Isolated和Durable)特性。在含有数据修改的事务中,该模块将确保或者所有的数据修改全部提交,或者全部回滚。与此同时,该模块还提供了一些磁盘文件的内存Cache功能。翻译 2012-11-24 21:02:26 · 4092 阅读 · 0 评论 -
SQLite剖析(9):动态内存分配
本文整理自http://sqlite.org/malloc.html。 SQLite通过动态内存分配来获取各种对象(例如数据库连接和SQL预处理语句)所需内存、建立数据库文件的内存Cache、以及保存查询结果。我们做了很多努力来让SQLite的动态内存分配子系统可靠、可预测、健壮并且高效。本文概述SQLite的动态内存分配,软件开发人员在使用SQLite时可以据此获得最佳性能。翻译 2012-12-04 22:03:15 · 7067 阅读 · 0 评论 -
SQLite剖析(6):临时文件和内存数据库
1、7种临时文件 内容整理自http://sqlite.org/tempfiles.html。 SQLite的一个不同特性是一个数据库由单个磁盘文件构成。这简化了SQLite的使用,因为移动或备份数据库只要拷贝单个文件即可。这也使得SQLite适合用作应用程序文件格式。但是,当在单个文件中存储一个数据库时,SQLite会在处理数据库的过程中使用许多临时文件。 SQLi翻译 2012-11-18 18:33:55 · 7816 阅读 · 0 评论 -
SQLite剖析(5):体系结构
本文整理自http://sqlite.org/arch.html。 本文描述SQLite库的体系结构。这些内容对于那些想了解和修改SQLite内部结构的人将会非常有用。在探索前我们先下载源码包sqlite-src-3071400.zip,在其src目录下包含了所有源码文件。注意若要编译SQLite库则下载单一文件版本sqlite-amalgamation-3071400.zip。翻译 2012-11-18 18:25:44 · 12609 阅读 · 0 评论 -
SQLite剖析(3):C/C++接口介绍
本文整理自http://sqlite.com/cintro.html。 SQLite 3是SQLite一个全新的版本,它虽然是在SQLite 2的代码基础之上开发的,但是使用了和之前的版本不兼容的数据库格式和API。SQLite 3是为了满足以下的需求而开发的: * 支持UTF-16编码 * 用户自定义的文本比较方法 * 可以对BLOBs字段建立索引翻译 2012-11-17 20:03:55 · 4275 阅读 · 0 评论 -
SQLite剖析(4):数据类型
本文整理自http://sqlite.org/datatype3.html。 许多SQL数据库引擎(除SQLite之外的各种SQL数据库引擎)使用静态、严格的数据类型。对于静态类型,一个值的数据类型由它的容器,即存储这个值的列来决定。SQLite则使用更加通用的动态类型系统。在SQLite中,一个值的数据类型被关联到这个值本身,而不是它的容器。SQLite的动态类型系统向后兼容一般静态类翻译 2012-11-17 20:11:17 · 6236 阅读 · 0 评论 -
SQLite剖析(2):编译及应用
若要编译SQLite库,需要下载单一文件版本sqlite-amalgamation-3071400.zip。它把sqlite3库的所有源码文件内容放到一个文件sqlite3.c中了(不包含管理工具shell.c),这个文件大概有110000多行,如果除去空白行和注释,则有65000多行的代码!这样做的好处是很容易应用在你的项目中,只需拷贝这一个源文件到你项目中即可。另外,编译器在编译单一的文件时能原创 2012-11-11 19:26:25 · 6231 阅读 · 0 评论 -
SQLite剖析(10):异步IO模式、共享缓存模式和解锁通知
下面介绍SQLite的一些扩展模块。本文整理自http://sqlite.org/docs.html。 1、异步I/O模式 通常,当SQLite写一个数据库文件时,会等待,直到写操作完成,然后控制返回到调用程序。相比于CPU操作,写文件系统是非常耗时的,这是一个性能瓶颈。异步I/O后端是SQLite的一个扩展模块,允许SQLite使用一个独立的后台线程来执行所有的写请求。虽然这翻译 2013-01-28 13:34:54 · 7041 阅读 · 0 评论