SQLite跟MySQL的对比

58 阅读4分钟

SQLiteMySQL 都是 关系型数据库(Relational Database),都支持 SQL 查询语言,但它们的定位、使用场景和功能有很大不同。


✅ 一、什么是 SQLite?

SQLite 是一个轻量级的嵌入式数据库引擎,它不需要独立的服务器进程或配置文件,所有数据都存储在一个本地文件中。

📌 特点:

特性描述
轻量占用内存小,适合移动设备、小型应用
文件型数据库所有数据保存在单一文件中
无需安装不需要像 MySQL 那样启动服务
支持 SQL支持大部分 SQL92 标准
只读模式可以挂载为只读数据库
线程安全在 Python、Java 等语言中可用作缓存或本地存储

🧩 示例使用场景:

  • 移动 App 数据库
  • 桌面软件的本地存储(如浏览器历史记录)
  • 开发原型时快速搭建数据库
  • 测试环境模拟数据库行为

✅ 二、什么是 MySQL?

MySQL 是一个功能齐全的客户端-服务器关系型数据库系统,广泛用于 Web 应用、企业系统等大规模数据处理场景。

📌 特点:

特性描述
客户端/服务器架构需要单独启动 MySQL 服务
多用户并发支持高并发访问,适合网站、API 后端
功能丰富支持事务、视图、触发器、外键、分区等高级特性
用户权限管理支持细粒度的权限控制
主从复制、集群支持主从同步、分库分表等企业级部署方式

🧩 示例使用场景:

  • 网站后端数据库
  • 电商平台、社交平台
  • ERP、CRM 系统
  • 微服务架构中的核心数据库

✅ 三、SQLite vs MySQL:相同点

相同点描述
✅ 都是关系型数据库使用 SQL 语句进行查询和操作
✅ 都支持事务提供基本的 ACID 支持(SQLite 默认开启)
✅ 支持索引、触发器、视图基本结构一致
✅ 支持多种编程语言Python、Java、C++、Go、Node.js 等都支持
✅ 都可以用于开发中小型项目SQLite 更适合本地开发,MySQL 更适合多人协作和部署

✅ 四、SQLite vs MySQL:主要区别

区别项SQLiteMySQL
架构嵌入式(无服务器)客户端-服务器模型
并发性能适合单线程、低并发支持多用户、高并发
存储方式单个 .db 文件多文件 + 表空间
安装与配置无需安装,直接使用需要安装、配置服务
用户权限管理无用户权限系统支持多用户、权限控制
外部连接不支持网络访问支持远程访问(通过 TCP/IP)
事务支持强大,但写操作串行化完整的事务支持,可并行执行
锁机制写操作锁整个数据库支持行级锁、表级锁
性能小规模数据快大数据、高并发下表现更好
数据类型动态类型(类似 JSON)强类型(int, varchar, datetime 等)
免费程度完全开源免费社区版免费,企业版收费

🧠 五、举个类比帮助理解

类比描述
SQLite像是“本地记事本”你一个人写东西,速度快、简单
MySQL像是“共享在线文档”多人协作、并发编辑、版本控制

🤝 六、如何选择?看你的需求!

场景推荐数据库
快速原型开发✅ SQLite
移动 App 本地缓存✅ SQLite
Web 后端 / API 服务✅ MySQL
多用户并发访问✅ MySQL
简单桌面工具✅ SQLite
需要远程访问✅ MySQL
企业级部署✅ MySQL
没有 DBA 维护能力✅ SQLite
高可用、主从、备份✅ MySQL
需要全文检索、JSON 支持✅ MySQL
仅需本地测试或学习✅ SQLite

✅ 七、SQL 语法差异(常见对比)

功能SQLiteMySQL
自增主键AUTOINCREMENT 关键字AUTO_INCREMENT
字符串类型TEXTVARCHAR(n), CHAR(n)
布尔类型INTEGER(0 或 1)BOOLEAN(底层是 TINYINT)
分页查询LIMIT offset, countLIMIT offset, count
外键约束支持,但默认不启用默认支持外键
时间戳字段需手动设置支持 TIMESTAMP 自动更新
JSON 类型支持(较新版本)支持(MySQL 5.7+)

📌 八、总结对比表

对比项SQLiteMySQL
是否需要服务器❌ 不需要✅ 需要
是否支持并发写入⚠️ 弱,写操作串行✅ 强,支持多线程写入
是否支持远程访问❌ 不支持✅ 支持
数据库存储位置单文件(.db)多文件 + 表空间
用户权限管理❌ 无✅ 支持
事务支持✅ 支持✅ 支持
外键支持✅ 支持(需手动启用)✅ 默认支持
是否适合生产环境❌ 不适合✅ 适合
是否容易部署✅ 极简❌ 需要配置