2017-05-24 38 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;當前沒有使用的任何頁面不需要在內存中。所以掃描一張表需要很少的內存。

相關問題