关于在生产环境中运行 SQLite 的几点心得
来源:jvns.ca — 2026-07-18
📋 概述
作者 Julia Evans 分享了她用 Django + SQLite 搭建网站后学到的一些运维经验。虽然 SQLite 常被说成适合小型生产站点,但它毕竟还是数据库,依然有性能、并发和备份等复杂问题需要认真对待。文章结合具体踩坑案例,介绍了几条简单但重要的实践。
🔑 核心要点
- ANALYZE 很重要 — 开启 WAL 模式后仍可能遇到慢查询;一个 FTS5 查询在 4000 行表上耗时 5 秒,执行 ANALYZE 后降到约 0.05 秒,因为统计信息能显著改善查询计划。
- 清理数据要小心 — 一次性删除大量行可能持有锁超过超时时间,导致其他写入进程超时崩溃;作者改为分小批删除,并考虑未来停机维护。
- 备份方案 — 分享了两种方式:用 restic 做 VACUUM INTO + gzip + S3 全量备份,以及用 Litestream 做增量实时复制。
- 多数据库拆分 — 在 Mess with DNS 项目中把表拆到三个独立的 SQLite 文件里,四年运行下来效果很好;这种拆分可以减轻单库压力。
- SQLite 仍是数据库 — 不要因为它轻量就忽视运维;数据库本身复杂,作者坦承自己还在不断学习这些“基础知识”。
💡 金句
我之前没有充分意识到的是,SQLite 仍然是一个数据库,数据库本身很复杂,而我对数据库运维了解得并不多。
👍 0
👎 0
← 返回 HN 首页