陈默的笔记

SQLite 其实比你想的能打

· 数据库

每次提到用 SQLite 做服务端存储,总有人第一反应是「那不是玩具吗」。上周做了个压测,结果有点意外。

压测环境

几个关键配置

PRAGMA journal_mode = WAL;
PRAGMA synchronous = NORMAL;
PRAGMA busy_timeout = 5000;
PRAGMA cache_size = -64000;   -- 64MB

WAL 是最重要的一条。默认的 DELETE 模式下读写互斥,一开 WAL,读不阻塞写、写不阻塞读,并发能力立刻上一个台阶。

结果

场景QPS
纯读(单条主键)约 18000
读写 9:1约 6000
纯写(批量,每批 100)约 8000

这个数字对绝大多数「内部系统」「小工具」来说完全够用。而且它没有网络开销,延迟稳定在微秒级。

什么时候别用

适合的场景

反过来说,这些东西用 SQLite 特别舒服:

我现在默认先用 SQLite,真到了瓶颈再换。很多时候根本到不了那一步,省下来的是运维成本和「数据库连接池调优」的一堆破事。