High Performance SQLite -Introduction

High Performance SQLite -Introduction

AI 总结

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

  1. 嵌入式应用
  2. web 应用
  3. portable
  4. 单纯用于文件协议(读 sqlite 的文件比直接读磁盘的文件快很多)

limitation

  1. 并发写量大。如果只是读量比较大那问题不大,如果是并发写可能你要理解 WAL 模式
  2. 如果需要共享数据库,那不太现实
  3. 数据量很大
  4. 需要严格的权限系统

文档

有问题当然可以问 AI,但还是推荐看看文档,sqlite 文档质量不错。

比如以 SELECT 为例。