
软件工程设计与实践
文章平均质量分 80
神明不自知
这个作者很懒,什么都没留下…
展开
-
2021SC@SDUSC SQLite源码分析(十三)————SQL 命令编译过程梳理
2021SC@SDUSC SQLite源码分析(十三)————SQL 命令编译过程梳理一、 sqlite3_exec()函数二、SQL 语句编译的调用层次一 sqlite3_prepare()二 sqlite3LockAndPrepare()三 sqlite3Prepare()四 sqlite3RunParser()五 sqlite3Parser()根据以往博客与小组讨论与资料查找,对命令的编译过程进行梳理,以对SQLite项目有个整体的理解。一、 sqlite3_exec()函数位于legacy.原创 2021-12-27 11:40:09 · 735 阅读 · 0 评论 -
2021SC@SDUSC SQLite源码分析(十二)————SQLite 数据库文件打开过程
2021SC@SDUSC SQLite源码分析(十二)————SQLite 数据库文件打开过程前言过程分析官方文档中的过程介绍逐步分析前言基于前面的博客分析和小组内成员的讨论,对数据库文件的打开过程做出分析与总结过程分析官方文档中的过程介绍逐步分析1、main():位于 shell.c从命令行参数中得到数据库名,如果数据库文件存在,则打开它。2、open_db():位于 shell.c功能:确认数据库是否已经打开。如果已打开,则什么都不做。如果没有,则打开它。如果打开失败,输原创 2021-12-23 19:58:31 · 859 阅读 · 0 评论 -
2021SC@SDUSC SQLite源码分析(十一)————SQLite RTree实现
2021SC@SDUSC SQLite源码分析(十一)————SQLite RTree实现一、插入涉及函数二、删除相关函数一、插入涉及函数一、ChooseLeaf用来定位插入记录的叶结点/*** This function implements the ChooseLeaf algorithm from Gutman[84].** ChooseSubTree in r*tree terminology.*/static int ChooseLeaf( Rtree *pRtree, .原创 2021-12-16 16:24:23 · 352 阅读 · 0 评论 -
2021SC@SDUSC SQLite源码分析(九)————SQLite Rtree结构
2021SC@SDUSC SQLite源码分析(九)————SQLite Rtree结构前言一、Rtree是什么?二、Rtree使用三、Rtree结构节点结构节点单元结构前言 Rtree位于sqlite源码的ext文件夹下,之前并未接触过此概念。查阅资料后写下此篇博客作为记录。一、Rtree是什么?Rtree的概念源于Toni Guttman:Rtree:A Dynamic Index structure for spatial Searching,Proc.1984 ACM SI.原创 2021-12-02 20:26:52 · 875 阅读 · 0 评论 -
2021SC@SDUSC SQLite源码分析(八)————SQLite虚拟机指令集
2021SC@SDUSC SQLite源码分析(八)————SQLite虚拟机指令集为了执行一个SQL语句,SQLite库首先解析SQL,分析该语句,然后生成简短的程序来执行该语句。产生的程序将由SQLite库实现的虚拟机来执行。虚拟机的源代码是vdbe.c文件。所有操作码的定义都包含在源文件注释中,下面是几个操作码指令实例分析一、OP_Column解析当前游标指定的记录的数据p1为当前游标索引号,p2为列号case OP_Column: { u32 payloadSize; /*原创 2021-11-25 18:29:49 · 748 阅读 · 0 评论 -
2021SC@SDUSC SQLite源码分析(七)————VDBE结构分析
2021SC@SDUSC SQLite源码分析(七)————VDBE结构分析一、vdbeInt.h1.结构概览2.虚拟机框架对象二、解释引擎VDBE是SQLite的核心。用户程序发出的SQL语句请求,由前端编译器处理,生成字节代码程序,然后由VM解释执行。VM执行时,又会调用B-tree模块的相关的接口,并输出执行的结果。一、vdbeInt.h是vdbe.c的私有头文件,定义了VDBE的常用数据结构。主要包含一些结构体和方法的声明或者预定义1.结构概览struct VdbeCursor(v原创 2021-11-18 19:41:41 · 1766 阅读 · 0 评论 -
2021SC@SDUSC SQLite源码分析(六)————b树增删改查API
2021SC@SDUSC SQLite源码分析(六)————b树增删改查API一、sqlite3BtreeInsert二、sqlite3BtreeDelete一、sqlite3BtreeInsert在b-树的适当位置插入一个新记录。新记录的内容由pX对象描述。pCur游标仅用于定义记录应该插入到哪个表中,以及被留在哪个表中,之后将指向一个随机位置。源码:int sqlite3BtreeInsert( BtCursor *pCur, /* Insert data原创 2021-11-10 20:30:07 · 959 阅读 · 1 评论 -
2021SC@SDUSC SQLite源码分析(五)————VDBE初步分析
2021SC@SDUSC2021SC@SDUSC SQLite源码分析(四)————sqlite的虚拟机前言一、初步分析二、 VdbeCursor 结构三、VDBE字节码编程语言前言代码生成器生成的代码由虚拟机来执行。关于虚拟机更详细的信息可参考http://sqlite.org/opcode.html 。虚拟机实现一个专为操作数据库文件而设计的抽象计算引擎。它有一个存储中间数据的存储栈,每条指令包含一个操作码和不超过三个额外的操作数。提示:以下是本篇文章正文内容,下面案例可供参考一、初步原创 2021-11-03 19:33:53 · 467 阅读 · 0 评论 -
2021SC@SDUSC SQLite源码分析(四)————sqlite中的cell概念
2021SC@SDUSC B树中的cell概念一、cell是什么?二、cell与溢出页结构1.溢出页的意义2.溢出页的定义三、cell与空间管理1.自由页的管理2.页内空间管理一、cell是什么?sqlite数据库文件被分为固定大小的页,所有的页由B+树模块管理。每个页要么是树中的页(内部页或者叶子页),要么是溢出页,或者是自由页(自由页通过单链表组织起来)。树中的页(内部页和叶子页)被分成许多cell,一个cell包括一个(或者一部分)负载。Cell是已分配或者已释放的磁盘空间集合。页的内容见往原创 2021-10-27 17:57:39 · 472 阅读 · 0 评论 -
2021SC@SDUSC SQLite源码分析(三)————B树API与游标
2021SC@SDUSC SQLite源码分析(三)————B树与内存的页一、B-tree模块的API二、API功能分析三 、关于游标一、B-tree模块的APIB-tree模块有自己的API,它们是独立于sqlite外部API的。这些API主要是针对SQLite需求量身定做的,因此对于其他的数据库并不适用。要想更加了解SQLite内部机制,先了解这些API是很有必要的。B-tree的另一个优点是本身事务机制、pager处理事务、锁以及日志文件,并为B-tree模块提供支持。B-tree API根据目原创 2021-10-20 21:00:02 · 499 阅读 · 0 评论 -
2021SC@SDUSC SQLite源码分析(二)————B树与内存的页
2021SC@SDUSC一、BtShared结构分析二、内存中的页文件头pager模块把数据库文件抽象为基于页的文件。而B+树模块在基于页的文件之上抽象出基于行的数据项。表中的行可以通过很多种形式组织起来,例如输入顺序、相关性、哈希表、键值序列。SQLite使用B+树来组织一个表中所有的行,不同的表有不同的B+树。SQLite把索引视为一个表,并且把索引存储在一个B树里,不同的索引有不同的B树。B树和B+树很像,都是一种键值序列数据结构。SQLite不使用其他的组织行(数据项)的方法。所以,一个数原创 2021-10-13 08:47:51 · 455 阅读 · 0 评论 -
2021SC@SDUSC SQLite源码分析(一)————SQLite内核结构与功能分析
2021sc@sdusc一、内核概述二、VDBE与B-tree的关系2.读入数据总结一、内核概述为了能更好的理解 SQLite,我们先从总的结构上讨论了内核,从全局把握 SQLite 很重要。SQLite 的内核实现不是很难,但是也不是很简单。本次主要讨论虚拟机(Virtual Machine)。VDBE 是 SQLite 的核心,它的上层模块和下层模块都是本质上都是为它服务的。它的实现位于 vbde.c, vdbe.h, vdbeapi.c, vdbeInt.h, 和 vdbemem.c 几个文件中原创 2021-10-07 23:50:44 · 551 阅读 · 0 评论 -
2021SC@SDUSC SQLite源码分析——综述与分工
SQLite源码分析——综述与分工SQLite基本介绍SQLite体系结构SQLite安装与源码下载初步分析与分工2021SC@SDUSCSQLite基本介绍SQLite是一款轻型数据库,是遵守ACID的关系数据库系统,SQLite是C语言编写的开源嵌入式数据库引擎。它完全独立,不具有外部依赖性。SQLite支持多数SQL92标准,可以在所有主要的操作系统上运行,并且支持大多数计算机语言。SQLite体系结构SQLite拥有一个精致的、模块化的体系结构,并引进了一些独特的方法进行关系型数据库的管理原创 2021-09-28 21:34:32 · 339 阅读 · 0 评论