SQLite 性能是否够用?看上去并发似乎还是很强

发布于

cavendi:

对 SQLite 的印象还停留在“本地轻量小玩具”或者“只能做客户端缓存”,但最近深入看了一些基准测试和生产实践(比如 PocketBase 这种纯基于 SQLite 的 BaaS),性能表现有点强:

- **零网络开销**:开启 WAL(Write-Ahead Logging)模式后,读写互不阻塞。省去了传统外置数据库(Postgres/MySQL)的跨网络通信开销,纯查询响应速度往往能直接碾压。

- **写并发并没有想象中脆弱**:虽说是单写机制,但依靠内存级排队和极短的事务耗时,在一台几十块钱的廉价 VPS 上,走 HTTP API 依然能跑出 1 分钟 5 万+ 次的写入(800+ 真实写入 TPS)。配合 CGO 编译驱动还能再翻 2-3 倍。

- **读多写少的绝对统治力**:只要不是持续秒级打点的物联网或超大型分布式系统,绝大部分中小型 SaaS、企业系统、高并发读的 Web 应用,单机 SQLite 跑起来既轻量又极其丝滑。

大家在生产环境里有大规模上 SQLite / PocketBase 的经验吗?在真实业务高并发下有没有踩到过什么隐蔽的锁死或瓶颈问题?现在写的后端功能基本起步使用 SQLite,因为用户量不多,我感觉也是完全够用。

什么样的体量,或者什么样的场景下,SQLite 才无法支撑呢

这是一个大佬的基准测试:[https://github.com/pocketbase/benchmarks](https://github.com/pocketbase/benchmarks)

---

原文链接:[点击查看](https://www.v2ex.com/t/1236727)

评论(4)

我拿它做本地的博客文章管理,用下来效果还可以

· 0 个赞

一般来说,普通人的业务流量根本摸不到 SQLite 的瓶颈,怎么快怎么来就行。真到扛不住那天再换更复杂的方案也不迟

· 0 个赞

主要缺两块:一个是跨网络服务,一个是用户管理和权限控制。要是还得自己写 wrapper 封装,那不如直接用现成的其他数据库。不过如果不涉及这些,99% 的场景 SQLite 都够用

· 0 个赞

说白了,如果你的应用压根不用操心负载均衡、读写分离、硬盘损坏、可用区故障、实时慢 SQL 统计、蓝绿部署打补丁这些事,那数据库爱用啥用啥

· 0 个赞

0.046056s