2017-05-24 55 views
1

我试图尽可能简化我的情况,所以它看起来不太真实,对不起。但它是基于真正的关注。确保审计表不会影响应用程序使用的RAM

让我们想象一下,我有一个小型Android应用程序向用户显示当前温度。温度每秒都在变化,应用程序一直在工作。

而且应用程序有一个“审计”数据表:

CREATE TABLE TemperatureAudit (
secondsFrom1970 INTEGER not null, 
temperature INTEGER not null); 

每年这个应用程序的工作审核表后就会相当大。假设我不想截断它,如果它不是真的必要的话。

因此,对于那些谁知道如何SQLite的Android上工作的问题:我应该担心?

  1. 当我不使用它时,sqlite会尝试将这个大表加载到RAM中吗?例如,当我从不同的表中选择。
  2. 如果我尝试“从TemperatureAudit温度> 0选择计数”,sqlite是否会一个接一个地加载这个大表?或者它会将整个表加载到RAM中?
  3. 如果sqlite对内存分配不太吝啬,我该怎么办?将此表移动到另一个数据库是否有助于解决第一个问题?表格分区有助于第二个分区吗?
+0

可能相关:https://stackoverflow.com/a/811862/295004 –

+0

该线程主要是关于速度。我的问题是关于内存使用情况,但无论如何,在那里学到了新的东西。 – Alek86

回答

1

SQLite加载所有表的元数据,但它不加载任何不需要的实际数据。

对数据库的所有访问均通过页面完成,页面的大小为几KB;当前没有使用的任何页面不需要在内存中。所以扫描一张表需要很少的内存。

相关问题