SQLite 是一款嵌入式关系型数据库,核心特点是 "轻量、零配置、自包含",完全无需单独安装数据库服务器,数据直接存储在单个文件中。
- SQLite 本身是一个数据库软件库 ,支持标准的 SQL 语言(结构化查询语言)来操作数据(比如增删改查、建表、关联查询等);
- 它不需要独立的数据库服务进程(区别于 MySQL、PostgreSQL 等 "客户端 - 服务器" 架构的数据库),而是直接嵌入到应用程序中,与应用共享进程,数据存储为单个
.db(或.sqlite3)文件,拷贝这个文件就相当于拷贝了整个数据库。
2. 核心特性(轻量 + 易用 + 跨平台)
- 零配置:无需安装、无需启动服务、无需配置用户名密码,开箱即用;
- 跨平台:单个数据库文件可在 Windows、macOS、Linux、移动端(Android/iOS)等所有主流平台通用;
- 轻量小巧:核心库体积仅几百 KB,内存占用极低;
- 支持标准 SQL:兼容大部分 SQL-92 标准,支持表、索引、事务(ACID 特性)、视图、触发器等关系型数据库核心功能;
- 文件级存储:整个数据库就是一个文件,便于备份、迁移(直接复制文件即可)。
3. 适用场景(优势领域)
- 嵌入式应用:桌面软件(如 PDF 阅读器、编辑器)、移动端 App(Android 内置 SQLite,iOS 也原生支持);
- 小型应用 / 原型:个人项目、内部工具、产品原型(无需复杂的数据库部署);
- 数据缓存:作为应用的本地缓存数据库(比如 App 离线数据存储);
- 轻量服务:访问量低、并发少的小型 Web 服务(不适合高并发场景)。
4. 不适用场景(局限性)
- 高并发写入:不支持多进程 / 多线程高频率写入(会出现锁等待,性能下降);
- 大型应用 / 高吞吐:数据量超大(如 GB 级以上且频繁查询)、高并发访问的服务(更适合 MySQL、PostgreSQL);
- 复杂权限控制:缺乏精细化的用户权限管理(适合单应用独占数据库的场景)。
核心本质区别(最关键!)
| 维度 | SQLite | MySQL(含 MariaDB) |
|---|---|---|
| 架构类型 | 嵌入式数据库(无独立服务) | 客户端 - 服务器(C/S)架构数据库 |
| 运行方式 | 嵌入到应用进程中,与应用 "同进程" 运行 | 独立进程(数据库服务),应用通过网络 / 本地连接访问 |
| 数据存储形式 | 整个数据库 = 1 个独立文件(.db/.sqlite3) | 数据分散存储在多个文件(表空间、日志文件等) |
| 核心定位 | 单应用 / 本地数据存储("随用随带") | 多应用 / 多用户共享数据("中心服务器") |
| 依赖与部署 | 零依赖、免部署(仅需嵌入库) | 需安装服务、配置端口 / 账号 / 权限 |
总结:场景
| 选择 SQLite 的场景 | 选择 MySQL 的场景 |
|---|---|
| 桌面应用、移动端 App(Android/iOS)、嵌入式设备 | Web 服务、后台系统、企业级应用 |
| 个人项目、内部工具、产品原型(快速落地) | 高并发读写(如电商、社交、支付系统) |
| 离线应用、本地缓存(如 App 离线数据、日志存储) | 大数据量(GB/TB 级)、复杂查询 / 统计 |
| 低访问量、低写入频率(如本地笔记、小型工具) | 多用户共享数据、需要精细化权限控制 |
| 需简单备份 / 迁移(拷贝文件即可) | 需高可用、可扩展(主从复制、分布式部署) |