选型

SQLite

你可能会说

我就想存点本地数据,AI 却让我装 MySQL、再起个 Docker,我是不是被带偏了?

一个文件就是整个数据库不用装服务、不用连端口,程序直接读写一个 .db 文件。手机 App、桌面工具、原型和测试环境里到处都是它;代价是同一时间只允许一个写入者。
也常被叫作SQLite 数据库嵌入式数据库
先问一句数据只在一台机器?
默认SQLite→擅长零运维单文件→别用多人在线写入
成熟度采用

什么时候选它

  • 本地工具、桌面 App、手机 App 的内置数据
  • 原型、脚本、测试环境——跑完整个库删掉就行
  • 读多写少的单机数据:词典、配置、离线缓存
  • 当成备份格式:一个文件拷走就是全部数据

什么时候别选

  • 多台服务器同时写同一个库,尤其别放在网络盘上
  • 高并发写入(下单、抢购),写锁会让请求排队
  • 需要在线扩容、主从复制、细粒度权限的系统
容易混在一起 · 怎么分
SQLite≠MySQL

SQLite 是嵌进程序里的库文件,没有服务进程和网络;MySQL 是要单独运行的服务器,供很多客户端连接。

SQLite≠普通文件存取

它仍然是数据库:有表、事务、索引和 SQL,只是没有服务器进程。

SQLite≠轻量版 MySQL

能用的 SQL 子集不同,用户权限、复制、存储过程这些 MySQL 能力它没有。

Q面试会问什么

  • 问:SQLite 为什么快?
    答:同进程直接读文件,没有网络往返和序列化;读多写少时几乎没有额外开销。
  • 问:并发写怎么办?
    答:默认整库写锁,同一时刻只有一个写者;WAL 模式能让读写并行,但写仍然串行。高并发要换服务端数据库。
  • 问:能上生产吗?
    答:单机、低并发、数据量可控的生产场景很常见(App、边缘设备),但不适合多人在线主库。
延伸阅读 · 权威出处