sqlite3是否在使用之前将整个数据库读入内存?

sczxawaw  于 12个月前  发布在  SQLite
关注(0)|答案(1)|浏览(134)

sqlite3是否需要在运行查询之前将整个sqlite DB读入内存?IOW,我是否受限于基于可用内存的DB大小?
换句话说,SQLite3处理数据库文件的方式是否与像postgres这样的数据库处理数据库文件的方式相同.
我一直以为是后者。但我可能错了。

pengsaosao

pengsaosao1#

除非你用的是in-memory database,否则不行。
附加信息:它来自此页面:https://sqlite.org/forum/info/23f41177ccabed1e
下面的摘录清楚地表明整个文件没有被读取。

  • 我怀疑一定有比你描述的更多的事情发生。如果我在一个记录所有读/写的SQLite构建版本上运行这个查询,并将其指向一个16709362688字节的SQLite数据库,这个过程只从文件中读取4712字节。事实上,它完成得非常快,这表明不是所有的16 GB文件都被读取了。*

此外,该页面中的OP证实了这一点:

  • 你是正确的-确实有一个干预进程(gunzipping db文件之前,它被打开),这是负责延迟。在未压缩的db文件的响应时间是非常好的。为混乱道歉,并感谢所有的帮助!Johan*

所以,总而言之,整个文件永远不会被读取,除非它需要解压缩。

相关问题