SQLite
你可能会说
我就想存点本地数据,AI 却让我装 MySQL、再起个 Docker,我是不是被带偏了?
一个文件就是整个数据库不用装服务、不用连端口,程序直接读写一个 .db 文件。手机 App、桌面工具、原型和测试环境里到处都是它;代价是同一时间只允许一个写入者。
也常被叫作SQLite 数据库嵌入式数据库
什么时候选它
- 本地工具、桌面 App、手机 App 的内置数据
- 原型、脚本、测试环境——跑完整个库删掉就行
- 读多写少的单机数据:词典、配置、离线缓存
- 当成备份格式:一个文件拷走就是全部数据
什么时候别选
- 多台服务器同时写同一个库,尤其别放在网络盘上
- 高并发写入(下单、抢购),写锁会让请求排队
- 需要在线扩容、主从复制、细粒度权限的系统
容易混在一起 · 怎么分
SQLite≠MySQL
SQLite 是嵌进程序里的库文件,没有服务进程和网络;MySQL 是要单独运行的服务器,供很多客户端连接。
SQLite≠普通文件存取
它仍然是数据库:有表、事务、索引和 SQL,只是没有服务器进程。
SQLite≠轻量版 MySQL
能用的 SQL 子集不同,用户权限、复制、存储过程这些 MySQL 能力它没有。
Q面试会问什么
- 问:SQLite 为什么快?
答:同进程直接读文件,没有网络往返和序列化;读多写少时几乎没有额外开销。 - 问:并发写怎么办?
答:默认整库写锁,同一时刻只有一个写者;WAL 模式能让读写并行,但写仍然串行。高并发要换服务端数据库。 - 问:能上生产吗?
答:单机、低并发、数据量可控的生产场景很常见(App、边缘设备),但不适合多人在线主库。
延伸阅读 · 权威出处