SQLite 并发压力实验室

SQLite 每秒能处理多少请求?10万日PV算高并发吗?亲手给这个数据库施加压力,看它什么时候开始喊 BUSY

实时状态

这是一个运行在服务器上的真实 SQLite 文件,所有访客共享同一个数据库。点击下方按钮写入一条数据。

-
总行数
-
文件大小
-
当前 QPS
-
累计写入
-
BUSY 错误

↑ 最近 30 次写入延迟(绿 <10ms · 黄 <50ms · 红 ≥50ms)

日访问量 → 实际 QPS

选择一个典型场景,看看日PV换算成每秒请求数到底是多少。点击后自动设置对应的压测参数。

个人博客
10万 日PV
≈ 1.2 req/s
小型 SaaS
50万 日PV
≈ 6 req/s
中型站点
200万 日PV
≈ 23 req/s
高流量应用
1000万 日PV
≈ 116 req/s

并发压测

模拟 N 个并发写入同时打到这个 SQLite 文件,观察成功率和延迟变化。可对比 WAL 模式的效果。

关闭

WAL vs 默认模式对比

同样的并发数,WAL 模式和默认 DELETE 模式的表现差异有多大?一键跑对比实验。

结论

通过上面的实验,你应该能直观感受到:

SQLite 轻松应对 10 万日 PV

10万日PV ≈ 1.2 req/s,SQLite 单线程写入都能达到几百 req/s。日访问量和并发是两个维度的概念。

真正的瓶颈是并发写锁

当几十个写入同时发生(真正的并发),SQLite 的单写锁就会成为瓶颈。WAL 模式能缓解,但无法彻底解决。

"高并发"这个词被滥用了

大多数人说的"高并发"其实是"高流量"。日10万PV的站点,同一毫秒内有2个以上写入请求同时到达的概率极低。SQLite 对这种场景绰绰有余。