Har*_*ala 7 h2 database-performance
我正在使用嵌入式模式的H2数据库工作java应用程序.我的应用程序消耗150mb的堆内存.
问题:步骤当我用2 mb的数据加载H2数据库时,数据库访问速度很快,堆内存大小为160mb.
但是,当我使用30 mb的数据(h2 db文件大小= 30 mb)加载H2数据库时.然后从我的应用程序访问数据库非常慢.原因是我的应用程序堆大小已经大大增加到300mb的大小因此降低了性能.我确认使用JConsole.
所以我的理解是因为H2数据库是使用java开发的,因为我在嵌入模式下使用H2数据库,H2数据库的堆大小被添加到我的应用程序中,这打破了应用程序.
问题是随着H2数据库大小的增长,我的应用程序的性能降低了.
如何解决这个问题?
我把连接作为
rurl = "jdbc:h2:file:/" + getDBPath() + dbname + ";CACHE_SIZE=" + (1024 * 1024) + ";PAGE_SIZE=512";
Run Code Online (Sandbox Code Playgroud)
增加H2的缓存.
在大多数情况下,性能问题实际上与缓存大小或页面大小无关.要分析性能问题,请参阅H2文档,特别是:
如果手动将缓存大小设置为1024*1024,则H2将使用1 GB堆内存.仅当JVM可用的物理内存超过1 GB(使用java -Xmx2048m或类似)时,才应使用此设置.否则,我建议使用默认设置(16 MB缓存大小).
使用小于默认值的页面大小可能会降低性能.这取决于硬盘,也可能取决于访问模式.但是,没有规则列表何时使用非默认页面大小 - 找出的唯一方法是尝试不同的设置.
| 归档时间: |
|
| 查看次数: |
14825 次 |
| 最近记录: |