2012-03-08 105 views
3

因此,我正在编写一个SQLite使用非常繁重的应用程序。我正在写入我的应用程序内存缓存系统,这将允许我排序和过滤我的数据(本质上是我自己的个人核心数据...)。我这样做是因为在我看来,这是一个更好/更快的选择,而不是从SQLite数据库不断发出读取请求。此外,大多数字段/列可以搜索/排序,并且在每个字段/列上设置索引似乎都不太理想。但我不确定。我知道SQLite数据库在内存中缓存了一些,但我不知道这对我有多大的优势。实现我自己的缓存系统将会很复杂,并且可能会增加我的内存占用空间,特别是因为我将每个表完全加载到内存中以执行排序/过滤器。如果它能够帮助我的应用程序的性能,我更愿意这样做,但会吗? SQLite缓存是否足以让我完全依赖它,或者当表开始变大(超过10,000行)时它会陷入停滞状态?我想我问是否有人有足够的经验与SQLite推荐一个。SQLite缓存与应用程序缓存

之前有人问:不,我不能使用核心数据。核心数据对我来说在我的应用程序中不够灵活。

+0

没人?那么,我想我会继续创建自己的缓存。无论如何这将是一个有趣的项目,至少我会知道发生了什么。 – 2012-03-09 13:43:00

+0

使用'pragma locking_mode = exclusive' IIRC,sqlite可以*更快*。 – 2012-07-21 05:50:49

回答

1

好的,这是我的想法:选择很大程度上取决于您的要求。我最终删除(尽可能)SQLite缓存,加载我需要的东西,并使用我自己的例程对它进行排序/过滤。这对我来说非常合适。但是我已经意识到通过实施这个,这在很多情况下都不起作用。具体来说,我做了很多工作以确保我的数据库大小尽可能小。我基本上只存储简单/小文本和数字。其他一切都是对外部文件的引用。这使得我的数据库足够小,可以少用作数据库,也可以用作索引服务,适用于将信息加载到内存和排序/过滤。

所以,答案在很大程度上取决于数据库。如果你正在存储可能占用大量内存的大型字段,最好让SQLite处理缓存。另一方面,如果你知道这些字段很小,那么SQLite缓存只会增加你的内存,并且往返数据库以排序/过滤数据只会增加你的延迟。相反,最好自己做分类/筛选,尽管我会承认这是很多工作。但最终它使我的应用程序比将它翻转到数据库更快。