gpt4 book ai didi

h2 - 在嵌入模式下使用 H2 DB 并在数据库中加载大量数据的性能问题

转载 作者:行者123 更新时间:2023-12-04 00:53:29 37 4
gpt4 key购买 nike

我正在以嵌入式模式使用 H2 数据库工作一个 java 应用程序。
我的应用程序消耗 150mb 的堆内存。

问题:
脚步
当我用 2 mb 的数据加载 H2 数据库时,数据库访问速度很快,堆内存大小为 160 mb。

但是当我用 30 mb 的数据加载 H2 数据库时(h2 db 文件大小 = 30 mb)。然后从我的应用程序访问数据库非常慢。原因是我的应用程序堆大小大幅增长到 300mb,因此性能下降。我确认使用 JConsole。

所以我的理解是因为 H2 数据库是使用 java 开发的,并且由于我在嵌入式模式下使用 H2 数据库,所以 H2 数据库的堆大小被添加到我的应用程序中,这会破坏应用程序。

问题是随着 H2 数据库大小的增长,我的应用程序的性能下降。

如何解决问题?

我已经给出了连接

 rurl = "jdbc:h2:file:/" + getDBPath() + dbname + ";CACHE_SIZE=" + (1024 * 1024) + ";PAGE_SIZE=512";

增加H2的缓存。

最佳答案

在大多数情况下,性能问题实际上与缓存大小或页面大小无关。分析性能问题,查看H2文档,特别是:

  • Database Performance Tuning
  • Using the Built-In Profiler
  • Application Profiling
  • Database Profiling
  • Statement Execution Plans
  • How Data is Stored and How Indexes Work

  • 如果手动将缓存大小设置为 1024 * 1024,那么 H2 将使用 1 GB 堆内存。仅当 JVM 可用的物理内存超过 1 GB 时才应使用此设置(使用 java -Xmx2048m 或类似方法)。否则,我建议改用默认设置(16 MB 缓存大小)。

    使用比默认值更小的页面大小可能会降低性能。这取决于硬盘,也可能取决于访问模式。但是,何时使用非默认页面大小没有规则列表 - 找出答案的唯一方法是尝试不同的设置。

    关于h2 - 在嵌入模式下使用 H2 DB 并在数据库中加载大量数据的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9798896/

    37 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com