如何在SQLite数据库与内存使用之间做出决定

asl*_*nci 8 memory sqlite objective-c ios

我从一位离开公司的同事那里继承了一个项目.在检查他的代码时,我感到困惑.在他从服务器收到大量数据后,他将这些数据保存到客户端的数据库中,然后他继续在db上处理这些数据.数据在应用程序开始时收到一次.我无法理解的是,为什么他不只是使用内存中的数据而是需要将其存储在db上?

在应用程序内部有许多内存密集型操作,比如使用Quartz查看大型pdf文件等等,但sqlite的大小是不是也算作应用程序的内存使用量?我的意思是你认为这可能是什么优势?

Ser*_*tov 9

SQLite在加载自身(~250-400Kb)时占用空间非常小.当SQLite使用磁盘数据库时,由于它没有内存开销,它甚至不测量文件的大小(默认情况下,数据库可以在其表中保存大约1Tb的数据).正如你所说,它是持久的数据存储.

对于内存数据库存储,您的应用程序将消耗

memory = database file size + small overhead
Run Code Online (Sandbox Code Playgroud)

你也可以在内存数据库中执行的查询得到一些限制(我不记得我在街上的时间,但你不能使用事务和真空)

将SQLite与磁盘数据库一起使用,与尝试使用文件存储数据集相比,您将获得更快的数据访问和更小的占用空间


Nat*_*lls 5

使用 SQLite,您可以快速轻松地查询特定数据,而无需将整个数据集加载到内存中并对其进行迭代。