SQLite学习(八) - 虚拟机指令1
为了执行SQL,SQLite首先解析分析SQL,生成一个由VM操作码组成的程序,类似汇编语言。SQLite虚拟机的实现代码在vdbe.c。 每个opcode的功能可以直接通过阅读源代码中的注释。 启用打印VM指令的方法 (1) 加编译选项NDEBUG (2) 在sqlite>下执行指令PRAGMA vdbe_trace=ON/OFF (3) explain 命令 用explain命令可以看到虚拟机操作码的执行计划 $ sqlite3 ex1.db sqlite> .explain sqlite> explain delete from tbl1 where two<20; addr opcode p1 p2 p3 p4 p5 comment ---- ------------- ---- ---- ---- --------- -- ------- 0 Trace 0 0 0 explain.. 00 1 Goto 0 20 0 00 2 OpenRead 0 2 0 00 tbl 3 SetNumColumns 0 2 0 00 4 Rewind 0 11 0 00 5 Column 0 1 2 00 tbl.two 6 Integer 20 3 0 00 7 Ge 3 10 2 cs(BINARY) 6a 8 Rowid 0 1 0 00 9 FifoWrite 1 0 0 00 10 Next 0 5 0 00 11 Close 0 0 0 00 12 OpenWrite 0 2 0 00 tbl 13 SetNumColumns 0 2 0 00 14 FifoRead 1 18 0 00 15 NotExists 0 17 1 00 16 Delete 0 1 0 tbl 00 17 Goto 0 14 0 00 18 Close 0 0 0 00 19 Halt 0 0 0 00 20 Transaction 0 1 0 00 21 VerifyCookie 0 1 0 00 22 TableLock -1 2 0 tbl 00 23 Goto 0 2 0 00 sqlite> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |