SQLite的SQL编译管线分为Tokenizer、Parser、名字解析和代码生成四段,其中查询规划与代码生成无独立边界。schema cookie变化时,sqlite3_step会根据语句是否由prepare_v2创建自动重编译或返回SQLITE_SCHEMA。实测显示INT与INTEGER PRIMARY KEY对同一查询产生不同访问路径,规划算法采用NN/N3启发式,不保证全局最优。
本文介绍SQLite的VDBE字节码执行引擎。sqlite3_prepare_v2将SQL编译为字节码程序,sqlite3_step在虚拟机上执行该程序。通过EXPLAIN分析点查SELECT name FROM t WHERE id=1,展示Transaction→OpenRead→SeekRowid→Column→ResultRow的执行流程。VDBE通过游标调用B-Tree,不直接读文件。强调opcode细节非稳定API,升级后需重新验证。
该文章是SQLite内核系列的技术指南,涵盖17篇内容,从单文件格式、Pager缓存、B-Tree分裂到VDBE字节码、WAL日志和锁状态机。文章提供阅读路径和依赖关系,适合嵌入式工程师或从PG/InnoDB转来的读者,帮助理解SQLite的存储、并发与选型对比。
本文为SQLite内核系列首篇,介绍其嵌入式行存数据库的定位:单文件、页式B-Tree、VDBE执行引擎及文件级单写者约束。对比PG/InnoDB服务器行存、RocksDB LSM与DuckDB列存,强调零IPC带来短调用链而非无引擎。规划17篇阅读路线,涵盖Pager、B-Tree、WAL、锁等机制,并锚定学术谱系与开放问题。
完成下面两步后,将自动完成登录并继续当前操作。