h2 数据库 java 堆问题

h2 database java heap issue

我们的应用程序使用 java spring 引导将数据从 avro 文件加载到内存中的 h2 数据库中。我有 145000000 行要插入,但出现 java 堆错误。它适用于 200 万行。我该如何解决这个问题?

下面粘贴了错误 原因:org.h2.jdbc.JdbcSQLNonTransientConnectionException:内存不足。; SQL声明: 在 org.h2.message.DbException.getJdbcSQLException(DbException.java:617) ~[h2-1.4.199.jar:1.4.199] 在 org.h2.message.DbException.getJdbcSQLException(DbException.java:427) ~[h2-1.4.199.jar:1.4.199] 在 org.h2.message.DbException.get(DbException.java:194) ~[h2-1.4.199.jar:1.4.199] 在 org.h2.message.DbException.convert(DbException.java:341) ~[h2-1.4.199.jar:1.4.199] 在 org.h2.command.Command.executeUpdate(Command.java:278) ~[h2-1.4.199.jar:1.4.199] 在 org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:233) ~[h2-1.4.199.jar:1.4.199] 在 org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:205) ~[h2-1.4.199.jar:1.4.199] 在 com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:95) ~[HikariCP-3.2.0.jar:na] 在 com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) ~[HikariCP-3.2.0.jar:na] 在 org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript(ScriptUtils.java:488) ~[spring-jdbc-5.1.5.RELEASE.jar:5.1.5.RELEASE] ...省略了 86 个公共帧 原因:java.lang.OutOfMemoryError:Java堆space

您正在尝试将 145M 行加载到内存中。因此,您显然需要为 JVM 提供更多内存来处理该存储量。

查看 adding/changing 您的 -Xmx JVM 参数以分配更多内存。请参阅此处了解更多信息:

What are the -Xms and -Xmx parameters when starting JVM?