SQLite Source Code

SQLite是一个用C语言编写的库,实现了一个小型、快速、自包含、高可靠性、功能完备的SQL数据库引擎。

本文主要从源代码的角度介绍SQLite库,首先会描述如何进行SQLite的源代码调试,然后介绍SQLite的代码架构,最后介绍SQLite引擎执行的一些基本原理及优化手段。

运行及调试

# 获取源代码
git clone https://github.com/sqlite/sqlite 
# 编译
cd sqlite
mkdir build && cd build                
../configure      
make sqlite3                   

编译完成之后,build目录下会生成一个名为sqlite3的可执行文件,在命令行执行这个文件,即可进入sqlite3的命令行模式。

在默认生成的Makefile文件中,编译参数会设置为非Debug模式,如果想要进行代码的调试,需要修改三处编译参数,保证编译出来的可执行文件带上Debug信息。

BCC = gcc  -g -O0
CFLAGS = -I/opt/homebrew/opt/libpq/include  -g -O0 -DSQLITE_OS_UNIX=1
TCC += -DDEBUG

这里做的改动一共有两个,1. 将原Makefile文件中的-O2全部改成-O0,2. 将-DNDEBUG改为-DDEBUG,这样修改以后就可以正常进行调试了。

架构

Reference

  1. Git mirror of the SQLite source tree
  2. Architecture of SQLite