我正在使用H2數據庫在嵌入式模式下的Java應用程序。 我的應用程序消耗150MB的堆內存。使用H2 DB在嵌入式模式下的性能問題與數據庫中的重負載數據庫
問題: 步驟 當我用2MB的數據加載H2數據庫時,數據庫訪問速度快,堆內存大小160mb。
但是當我加載H2數據庫中的數據的30 MB(H2分貝文件大小= 30 MB)。然後從我的應用程序訪問數據庫非常緩慢。原因是我的應用程序堆的大小大大增加到300mb,因此性能下降。我確認使用JConsole。
所以我的理解是,因爲H2數據庫是用java開發,因爲我在嵌入式模式下使用H2數據庫,數據庫H2的堆大小被添加到我的應用程序,它更是打破了應用程序。
的問題是作爲H2數據庫大小成長,我的應用程序的性能下降。
如何解決該問題?
我已經給出了連接,
rurl = "jdbc:h2:file:/" + getDBPath() + dbname + ";CACHE_SIZE=" + (1024 * 1024) + ";PAGE_SIZE=512";
增加H2的緩存。
默認情況下,持久嵌入式H2數據庫的高速緩存大小爲16 MB。你使用內存數據庫還是更高的緩存設置?是否確定性能會因爲堆內存使用情況而降低(因爲這種情況非常少見),並確實檢查性能問題的位置(例如jps -l/jstack -l)? –
2012-03-21 18:03:31
您已使用非默認緩存大小和頁面大小 - 未使用默認設置的原因是什麼? – 2012-03-22 05:59:29
您是否找到了解決方案?我遇到了同樣的問題。小型數據庫是好的,如果我將大量數據插入到一個表中,所有查詢開始花費更長時間。 – Gust 2017-01-26 17:32:37