SQLite - Virtual Database Engine

来源:互联网 发布:淘宝2元包邮 编辑:程序博客网 时间:2024/05/23 21:41

VDBE是SQLite的核心,理解的VDBE的内部工作机制对于理解SQLite是如何工作的十分重要。 从SQLite Architectue图中可以看出, VDBE处在SQLite的中心位置。VDBE实现了一个可以执行 VDBE指令的虚拟机。VDBE指令由opcode和operand组成, 指令可以有0~4个operand. 如果了解汇编语言, 就可以很容易的理解VDBE指令。

查看VDBE 指令方法
sqlite>.explain
sqlite>CREATE TABLE examp(one text, two int);
sqlite>EXPLAIN   INSERT INTO examp VALUES('Hello, World!',99);
addr  opcode         p1    p2    p3    p4             p5  comment
----  -------------  ----  ----  ----  -------------  --  -------------
0     Trace          0     0     0                    00
1     Goto           0     10    0                    00
2     OpenWrite      0     4     0     2              00
3     NewRowid       0     2     0                    00
4     String8        0     3     0     Hello, World!  00
5     Integer        99    4     0                    00
6     MakeRecord     3     2     5     ad             00
7     Insert         0     5     2     examp          1b
8     Close          0     0     0                    00
9     Halt           0     0     0                    00
10    Transaction    0     1     0                    00
11    VerifyCookie   0     3     0                    00
12    TableLock      0     4     1     examp          00
13    Goto           0     2     0                    00

具体每个opcode的意义可以查这个网页: http://www.sqlite.org/opcode.html

或者

直接阅读vdbe.c 源代码文件中的sqlite3VdbeExec(vdbe* p)函数

 

 

 

原创粉丝点击