作者在一个 Django 网站中选择 SQLite,并提醒“小型生产站点可用 SQLite”不等于不需要数据库运维。Django ORM 会让数据库承担更多工作;仅仅启用 WAL 模式并不能覆盖查询规划、维护和并发写入的全部问题。

一次使用 FTS5 的约 4,000 行查询耗时约 5 秒。执行 ANALYZE 后,耗时降到约 0.05 秒。原因是 ANALYZE 生成统计信息,让查询规划器能作出更合适的选择;即使没有完全读懂执行计划,这一维护步骤也可能消除意外的低效路径。
清理大量无用行同样会触发实际问题:耗时较长的 DELETE 在事务中执行时,其他 worker 尝试写入,若设置了 5 秒超时就可能失败并崩溃。结论不是回避 SQLite,而是把长事务、超时、维护窗口和查询统计纳入运行策略,在负载增长时持续观察其边界。