H2数据库批量上传

我有一个任务是将一些数据从
mysql加载到h2.我们必须在UI级别渲染树,其中树具有大约50000个节点.所以认为从H2读取可能会减少延迟.

为此,我必须从MySQL加载大约1M(每个客户都有自己的树)记录到H2.装载部件由应用程序处理.它从MySQL读取并批量更新到H2.它在执行执行时处理40000条记录.但随着迁移过程的继续,服务器内存不足.

我尝试使用“SET LOG 0,SET LOCK_MODE 0,SET UNDO_LOG 0”来有效地加载数据,但服务器内存仍然相同.

我为堆设置了512M内存.

H2文档说使用“create table … as select …”来加快数据加载但我认为这不会减少加载时间,因为应用程序必须读取1M记录并创建CSV文件.

有人可以建议吗?

最佳答案 为避免必须创建CSV文件,可以使用
CREATE LINKED TABLE语句或使用
CALL LINK_SCHEMA创建
linked tables.然后使用CREATE TABLE … AS SELECT复制数据.

至于内存问题,你是否创建了一个内存数据库?如果是,如果使用in-memory file system, or the compressed in-memory file system:jdbc:h2:memFS:test或jdbc:h2:memLZF:test而不是jdbc:h2:mem:test,则可以节省内存(以某些速度为代价).如果您没有使用内存数据库,那么我不确定问题是什么.

点赞