小红花·文摘
  • 首页
  • 广场
  • 排行榜🏆
  • 直播
  • FAQ
Dify.AI

本目录记录「SQLite 内核」系列的单机实验。正文机制结论以 SQLite 官方文档(file format、WAL、locking)与 3.45+ 源码为准;实验只补充可观察行为,不以单机数字推断服务器数据库或跨库排名。

SQLite 内核复现说明

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T08:24:56Z

> 本文是写作规划,不是可发布正文。拆解对象:SQLite 3.45.x–3.46.x 的单文件嵌入式行存内核——Pager / B-Tree / VDBE / Rollback Journal·WAL / 锁状态机 / 计划器与恢复;DuckDB 只作选型边界句,不重写 [列存引擎](../columnar-engi…

SQLite 内核 — 系列规划

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T08:24:56Z

拆解 sqlite3_backup_init/step/finish 与 CLI .backup 如何在不停机的前提下拿到一致快照;用本机 3.53.2 实测 .backup 后备份库 count(*)=3、integrity_check=ok,并实测对比:在写事务打开期间用 cp 拷贝主文件,物理文件已经比头部记录的逻辑页数更大。

【SQLite 内核】在线备份与 sqlite3_backup:与 cp 热拷贝的语义差

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T00:00:00Z

用进程模型、日志、锁与缓冲池四轴对照 SQLite 与 PostgreSQL / InnoDB:说明嵌入式单文件如何删掉服务器层,以及同名 WAL、隔离、缓存概念为何不能平移运维经验;不写跨库吞吐排名。

【SQLite 内核】与 PG / InnoDB 机制对照:进程、WAL、锁、缓冲池

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T00:00:00Z

钉住官方 File Locking And Concurrency 文档定义的 UNLOCKED/SHARED/RESERVED/PENDING/EXCLUSIVE 五态锁阶梯:谁能与谁共存、PENDING 如何防写者饿死、Pager 为何只跟踪四态;用本机 3.53.2 真实双连接冲突实验验证,shared cache 与 WAL 差异只点边界,留给第 8、10 篇。

【SQLite 内核】锁状态与 shared cache:五态锁阶梯与 writer starvation

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T00:00:00Z

拆解 PRAGMA integrity_check/quick_check 的检查范围与复杂度差异,对照官方 How To Corrupt Your Database Files 列出的四类常见损坏来源;用本机 3.53.2 实测一个刻意损坏的数据库,比较 .recover 与 .dump 在数据丢失时的真实行为差异,钉住“修复=尽力抢救,不是万能恢复”的边界。

【SQLite 内核】完整性检查与损坏恢复:integrity_check 与修复边界

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T00:00:00Z

钉住 SQLite 默认的原子提交机制:写前把原页拷进 -journal、DELETE/TRUNCATE/PERSIST 三种提交点如何实现、cache spill 何时把 journal 变成真正的 hot journal;用本机 3.53.2 实测崩溃恢复全过程,WAL 对照留给第 8 篇。

【SQLite 内核】Rollback Journal 模式:写前拷贝与提交点

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T00:00:00Z

用部署形态、写并发、查询形态与持久化需求收束 SQLite / PostgreSQL·InnoDB / DuckDB / RocksDB 选型;给出站内阅读地图、全系列学术谱系与开放问题,标志 SQLite 内核系列完成。

【SQLite 内核】选型与阅读地图:SQLite vs PG vs DuckDB vs RocksDB

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T00:00:00Z

钉住 SQLite WAL 模式如何反转 rollback journal 的读写关系:原始内容留在主文件、新内容追加到 -wal,checkpoint 才把帧搬回主文件;用本机 3.53.2 实测 journal_mode=WAL 切换与 passive/truncate checkpoint 的真实帧数,读放大与 checkpoint 频率的取舍留作开放问题。

【SQLite 内核】WAL 与 checkpoint:追加日志与读写并发

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T00:00:00Z

钉住 ATTACH DATABASE 的命名空间规则、super-journal 如何让跨文件事务在 rollback journal 模式下保持原子,以及官方文档明确写明的一条反常识边界:main 库或任一 attached 库切到 WAL 后,跨库事务只在单文件粒度原子,崩溃中间态可能只改了一部分文件;本机 3.53.2 实测跨库 JOIN、跨库事务提交与 DETACH 锁冲突。

【SQLite 内核】ATTACH / 多库边界:跨库事务的原子性在 WAL 下会退化

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T00:00:00Z

拆开 sqlite3_prepare_v2 内部如何把 SQL 文本经词法、语法、名字解析、查询规划变成第 5 篇执行的 bytecode;用本机 3.53.2 的 EXPLAIN QUERY PLAN 钉住三种访问路径形态,并交代 schema cookie 触发 reprepare 的机制,规划算法细节留给第 11 篇。

【SQLite 内核】SQL 编译管线:从文本到 VDBE 程序

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T00:00:00Z

拆解 BEGIN DEFERRED/IMMEDIATE/EXCLUSIVE 三种模式的取锁时机差异,对照 Berenson et al. SIGMOD 1995 的隔离词汇与官方 Isolation In SQLite 文档;说明单写者约束下 WAL 快照为何天然回避 write skew,并用本机 3.53.2 实测三种 BEGIN 均可提交。

【SQLite 内核】事务与隔离:DEFERRED/IMMEDIATE/EXCLUSIVE 与单写者快照

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T00:00:00Z

钉住 covering index 消除的具体开销:第 4 篇 index b-tree 只存 key+rowid,命中后仍要回表这一次二次查找;用本机 3.53.2 实测 SELECT 列是否全部落在索引内如何改变 EQP 输出,并区分语句级自动索引与 sqlite_autoindex_* 约束索引这两个常被混淆的概念。

【SQLite 内核】索引与 covering scan:什么时候真的省掉了第二次查找

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T00:00:00Z

钉住 EXPLAIN QUERY PLAN 的 SEARCH/SCAN 判定、ANALYZE 写入 sqlite_stat1/stat4 的具体语义,以及没有统计时 SQLite 用什么默认猜测(表大小猜一百万行、重复度猜 10);对照官方 N3 join 排序算法与 PG 式穷举代价优化器的复杂度边界,本机 3.53.2 实测覆盖两条 EQP 路径。

【SQLite 内核】查询计划器与统计:没有 ANALYZE 时的启发式与代价估计边界

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-18T00:00:00Z

拆解 SQLite 单文件格式:100 字节 database header 与 B-Tree 页面头的逐字段布局,用本机 3.53.2 CLI 实测 hexdump 核对 magic、page size、页类型标志,并钉住 file format 官方规范与 Bayer/McCreight 谱系。

【SQLite 内核】单文件格式与页面头

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-17T00:00:00Z

拆解 Pager 作为 B-Tree 与操作系统文件之间的契约层:page cache 命中/未命中路径、脏页生命周期与提交前的可回滚保证,并与 PG shared_buffers、InnoDB Buffer Pool 的跨进程共享模型对照。

【SQLite 内核】Pager 与 Page Cache

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-17T00:00:00Z

作者分享了使用SQLite作为Django网站数据库的经验,启用WAL模式和运行ANALYZE显著提高了查询性能。清理数据库时建议分批操作以避免超时。虽然当前Django ORM查询性能尚可,但未来可能考虑使用Postgres。备份方面,作者尝试了restic和Litestream,后者支持增量备份。整体上,作者对SQLite的使用体验积极,期待未来继续学习。

学习一些关于运行SQLite的知识

Julia Evans
Julia Evans · 2026-07-17T00:00:00Z

定位单文件嵌入式行存在服务器行存与 LSM 嵌入 KV 之间的生态位;钉住 SQLite 架构约束、站内分工与 17 篇阅读路线,并以 Bayer/McCreight、官方 file format、PVLDB 2022 为学术锚点。

【SQLite 内核】嵌入式行存全景:单文件、单写者、零 IPC

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-17T00:00:00Z

钉住 SQLite 把 SQL 编译成 bytecode、由 sqlite3_step 驱动虚拟机执行的路径:指令格式、寄存器、B-Tree 游标与 ResultRow;用本机 3.53.2 EXPLAIN 走通一次点查,编译管线细节留给第 6 篇。

【SQLite 内核】VDBE 字节码执行:prepare、step 与寄存器机

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-17T00:00:00Z

补齐嵌入式行存内核层:从单文件格式、Pager/B-Tree、VDBE 到 Rollback Journal/WAL、锁状态机与计划器,并以 PG/InnoDB、DuckDB、RocksDB 对照收束;承接 sqlite-billion-rows 性能叙事。

【SQLite 内核】单文件 · Pager · B-Tree · VDBE · WAL · 锁

土法炼钢兴趣小组的博客
土法炼钢兴趣小组的博客 · 2026-07-17T00:00:00Z
  • <<
  • <
  • 1 (current)
  • 2
  • 3
  • >
  • >>
👤 个人中心
在公众号发送验证码完成验证
登录验证
在本设备完成一次验证即可继续使用

完成下面两步后,将自动完成登录并继续当前操作。

1 关注公众号
小红花技术领袖公众号二维码
小红花技术领袖
如果当前 App 无法识别二维码,请在微信搜索并关注该公众号
2 发送验证码
在公众号对话中发送下面 4 位验证码
小红花技术领袖俱乐部
小红花·文摘:汇聚分发优质内容
小红花技术领袖俱乐部
Copyright © 2021-
粤ICP备2022094092号-1
公众号 小红花技术领袖俱乐部公众号二维码
视频号 小红花技术领袖俱乐部视频号二维码