首页 >> 新知 > 学识问答 >

问sqlite 数据库介绍 轻量级嵌入式数据库详解

2026-11-12 16:40:01

答

sqlite 是一款开源的嵌入式关系型数据库,它不需要独立的数据库服务进程,整个数据库就是一个单独的文件,支持标准 SQL 语法,体积非常小巧,广泛用在移动端软件桌面应用嵌入式设备浏览器本地存储里面,很多初学者学习数据库的时候都会优先接触 sqlite,它和 mysqloracle 这类 C/S 架构数据库有本质区别,传统数据库要单独启动服务端,客户端通过网络连接访问,sqlite 把数据库引擎直接集成到应用程序内部,程序直接读写数据库文件,不需要网络通信,部署几乎零配置,上手门槛很低,但是它也有明确的适用边界,高并发大量写入的业务场景并不适合 sqlite,理解它的架构特点,才能判断什么时候选 sqlite,什么时候应该换成服务型数据库。

sqlite 核心基础信息

项目详细说明
类型嵌入式关系型数据库
是否需要独立服务进程不需要
存储形式单个磁盘文件
协议无网络协议,程序直接调用 API
许可证公有域开源协议,商用免费
支持标准兼容大部分 ANSI SQL 语法
典型平台安卓 ios Windows Linux 嵌入式 MCU

核心特点深度说明

1 零配置无服务器,不用安装数据库服务,不用设置账号密码端口,创建数据库就是生成一个后缀为 db 或者 sqlite3 的文件,应用程序加载这个文件就可以执行增删改查,非常适合小型项目快速开发。

2 单文件存储,表索引视图触发器全部保存在同一个文件里面,备份迁移只需要复制这一个文件,操作非常简单,也方便打包进软件安装包。

3 支持事务,具备 ACID 特性,支持回滚提交,就算程序意外断电崩溃,数据库文件依然可以保证数据不会损坏,自带回滚日志或者 WAL 预写日志机制。

4 跨平台兼容,同一份 sqlite 数据库文件,可以在 Windows Linux 安卓等不同系统之间直接拷贝使用,API 在各种编程语言都有封装,Python Java C C Go PHP 都能调用。

5 读写并发限制,默认模式下同一时间只允许一个写入操作,读操作可以多个并发,如果大量同时写入,会出现锁等待报错,这是 sqlite 最主要的短板。

适用场景与不适用场景

分类场景举例
推荐使用手机 APP 本地缓存 桌面软件本地数据 嵌入式设备 小型网站原型 测试 Demo 单机工具软件
不推荐使用高并发多用户在线业务 大数据量海量写入 分布式集群业务 需要多服务器共享同一份数据库

基础使用步骤

第一步,准备开发环境,大部分编程语言自带 sqlite 相关库,Python 内置 sqlite3 模块,不需要额外安装,C 语言需要下载 sqlite 源码或者编译动态库。

第二步,创建数据库文件,调用连接函数,如果目标文件不存在,sqlite 会自动新建数据库文件。

第三步,创建数据表,编写 CREATE TABLE 语句,定义字段类型主键约束,sqlite 支持动态类型,类型约束相对宽松。

第四步,执行 SQL 操作,使用 INSERT UPDATE DELETE SELECT 语句完成数据读写,参数化查询可以避免 SQL 注入风险。

第五步,事务控制,批量修改数据的时候开启事务,全部成功再 commit,出错就 rollback 回滚。

第六步,性能优化,开启 WAL 模式提升读写并发,建立合适索引,避免全表扫描,定期执行 VACUUM 整理碎片回收空间。

和 MySQL 对比要点

sqlite 是嵌入式库,无服务,适合单机本地,并发写入弱。

MySQL 是客户端服务器架构,需要启动服务,支持高并发,适合多用户网络业务,部署维护成本更高。

【常见问题】

问题 1 sqlite 数据库支持并发写入吗

回答 1 sqlite 数据库可以并发读取,但是写入是串行执行,同一时刻只允许一个写事务,开启 WAL 模式之后可以改善读写冲突,但是仍然不适合超高并发写入业务。

问题 2 sqlite 数据库可以商用吗

回答 1 sqlite 数据库采用公有域协议,没有版权限制,个人和商业项目都可以免费使用,不需要支付授权费用,也不需要公开项目源码。

问题 3 sqlite 数据库最大能存多少数据

回答 1 sqlite 数据库理论最大文件上限非常高,单库可以达到 TB 级别,但是实际使用当中数据量过大之后查询性能会下降,超过千万级记录之后就需要评估是否更换其他数据库。

【免责申明】

本内容基于 sqlite 公开技术资料整理,sqlite 官方版本会持续迭代更新,语法和性能特性随版本升级存在变化,详细规范请参考 sqlite 官方文档,本内容仅作为技术学习参考,不构成项目选型的唯一决策依据。

 

相关阅读

最新文章