0
所以,我有一個資源有限的服務器。 (3GB的內存) 我需要知道的是,在需要時最好使用這個什麼更好的性能?一個列表,或從數據庫獲取信息?
List<Object> list = new ArrayList<Object>();
void init(){
list = loadListFromDatabase
}
以及添加或刪除到列表,或者,當我需要的對象,從數據庫中加載它的每一個訪問時間?
所以,我有一個資源有限的服務器。 (3GB的內存) 我需要知道的是,在需要時最好使用這個什麼更好的性能?一個列表,或從數據庫獲取信息?
List<Object> list = new ArrayList<Object>();
void init(){
list = loadListFromDatabase
}
以及添加或刪除到列表,或者,當我需要的對象,從數據庫中加載它的每一個訪問時間?
給你一些建議,
如果你有一個沉重的數據庫就像50+表,記錄萬元,然後儘量減少數據庫的訪問。
對於小型數據庫(在你的情況下)數據庫訪問不會太重要。
但內存處理速度比DB訪問快
如果你正在使用你的應用,其交互/修改/(在你的情況下,對象表)使用相同的表讀數,然後不要去獲取所有的多線程內存和處理,而不是每次從數據庫中獲取它。
如果你的代碼是連續的或者這個表是獨立的(沒有其他的塊正在修改同一個表)然後立即在內存中獲取它然後把它存回db是很有效的。
你應該考慮的另一個因素是內存大小,如果你的內存不足(你提到的是3GB內存),那麼第一個選項是更好的,即每次從數據庫獲取數據。
你的應用程序部署單臺計算機上用3GB內存,如果是,那麼請找到你的應用程序的內存消耗不就是基準任何負載應用程序需要分析你的統計後的內存
ATLEAST這一數額,據此作出決定。
使用後者,因爲數據庫中的對象的數據可能會被另一個事務修改。 –
這取決於。你的代碼通常最終訪問大部分對象嗎?在這種情況下,它可能會更快地加載它所有的前面。或者你只編碼訪問幾條記錄,很少?是這樣,也許按需加載。 – slipperyseal
那麼,不是每個對象都被不斷訪問,但是那些正在被頻繁訪問的對象。 通過列表,我目前是這樣做的,我編輯對象,然後重新將它添加到列表 –