H2数据库批量上传

时间:2012-11-17 04:36:04

标签: 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文件。

有人可以建议吗?

1 个答案:

答案 0 :(得分:2)

为避免创建CSV文件,您可以使用linked tables语句或使用CREATE LINKED TABLE创建CALL LINK_SCHEMA。然后使用CREATE TABLE ... AS SELECT复制数据。

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