2013-02-25 65 views
1

我注意到了sqlite中的這種行爲。當我重新使用遊標對象時,任務管理器中的工作集內存不斷增加,直到我的程序拋出內存不足異常。是sqlite緩存查詢的結果進行優化?

我重構了代碼,每當我查詢我打開連接到sqlite文件查詢我想要什麼,然後關閉連接。

後者似乎不是那麼渴望記憶。它不會超過某個點。

我對我的sqlite數據庫所做的一切都是簡單的選擇(其中包含兩個聚合)針對一個表。

這是我們可以控制的行爲嗎?我想重用我的光標對象,但不想被吃掉的記憶...

+1

的SQLite自己的高速緩存具有固定的大小(通常爲2 MB)。這聽起來好像有些對象沒有正確清理。 – 2013-02-25 17:48:59

回答

2

SQLite: PRAGMA cache_size

默認情況下,高速緩存的大小是相當大的(〜2MB),並且爲每個連接。您可以設置它與SQL語句較小:

PRAGMA cache_size=-KB 

使用負「 - 」 KB值設置爲一個大小,否則將其設置的頁面的使用次數。

此外,如果使用多個連接,你可能想使用一個共享的緩存以節省內存: SQLITE: Shared Cache