High Performance SQLite -Introduction
AI 总结
点击展开 AI 回复
SQLite 介绍
对于 MySQL 和 PostgreSQL,他们都是 client-server 模型、有他们自己的协议,而 SQLite 并不是,一个数据库只是一个单纯的文件,C lib 和这个文件进行交互,文件格式向后兼容。
SQLite 保证至少在 2050 年前保证向后兼容。
SQLite is SAFE
SQLite 最开始的目标是嵌入式系统,还有移动端,所以它有很多测试来测试断电或者 media 被移除之类的场景。也就是说即使断电,事务也不会执行一半。
SQLite 是开源的,但不接受开源贡献,它们声称的原因是为了保证可靠性、稳定性。不过社区有一些其他的 fork。
Just a File
之前说过 SQLite 的数据库只是一个磁盘的文件,跟 MySQL 等数据库完全不一样。这个文件有非常非常严格的定义,兼容性很好,所以直接发送文件很方便。由于它是一个文件,所以新建数据库也完全没有开销。
MacOS 上就自带有 sqlite3,直接运行后提示目前是在内存中运行的数据库。
Good Uses
- 嵌入式应用
- web 应用
- portable
- 单纯用于文件协议(读 sqlite 的文件比直接读磁盘的文件快很多)
limitation
- 并发写量大。如果只是读量比较大那问题不大,如果是并发写可能你要理解 WAL 模式
- 如果需要共享数据库,那不太现实
- 数据量很大
- 需要严格的权限系统
文档
有问题当然可以问 AI,但还是推荐看看文档,sqlite 文档质量不错。
比如以 SELECT 为例。