SQLite缓存与应用程序缓存

3
所以我正在编写一个非常依赖SQLite的应用程序。我正在努力为我的应用程序编写一个内存缓存系统,它将允许我对数据进行排序和过滤(本质上是我的个人Core Data)。我这样做是因为在我看来,这比不断从SQLite数据库进行读取请求更好/更快。此外,大多数字段/列都可以进行搜索/排序,为每个字段设置索引似乎并不理想。但我不确定。我知道SQLite数据库在一定程度上会被缓存在内存中,但我不知道其程度或者这对我有多大优势。实现自己的缓存系统将是复杂的,并且可能会增加我的内存占用量,特别是因为我正在将每个表完全加载到内存中以执行排序/过滤。如果这有助于我的应用性能,我更愿意这样做,但真的吗?当表开始变得庞大(10,000+行)时,SQLite缓存是否足够可靠?我想问问是否有任何人具有足够的SQLite经验,可以推荐其中之一。
在任何人问之前:不,我不能使用Core Data。Core Data 不够灵活,无法在我的应用程序中使用。

没有人吗?好吧,我猜我就自己来创建我的缓存吧。无论如何,这将是一个有趣的项目,至少我会知道发生了什么。 - Aaron Hayman
据我所知,使用pragma locking_mode = exclusive可以使sqlite快得多。 - tc.
1个回答

1

好的,这是我得出的结论:选择取决于您的需求。我最终尽可能地删除了SQLite缓存,加载所需内容,并使用自己的程序进行排序/过滤。这对我来说非常有效。但是我意识到,在许多情况下,这种方法行不通。具体而言,我已经做了很多工作,以确保我的数据库尽可能小。基本上,我只存储简单/小文本和数字。其他所有内容都是对外部文件的引用。这使得我的数据库足够小,可以将其用作索引服务,这对于将信息加载到内存并进行排序/过滤非常有效。

因此,答案在很大程度上取决于数据库。如果您正在存储可能占用大量内存的大字段,则最好让SQLite处理缓存。另一方面,如果您知道字段将很小,则SQLite缓存只会增加您的内存使用率,并且往返于数据库以对数据进行排序/过滤只会增加延迟。相反,最好自己进行排序/过滤,尽管我承认这需要很多工作。但是最终,它使我的应用程序比往返于数据库更快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接