我有一个包含五个属性的域类,它们都是字符串,整数或双精度。我使用H2内存数据库作为此域类的数据源。这是存储在此数据库中的唯一对象;其余的都存储在一个完全独立的MySQL数据库中。使用内存中的H2数据库缓存批量导入
H2数据库是临时的。数据每小时从远程下载的CSV文件中加载并替换数据库中的旧数据。因为所有其他进程都必须等待它完成,所以重要的是尽可能快。
现在我的代码生成一个约6000个这样的域对象的数组,然后每个save
它。这全部在withTransaction
之内。
这需要大约10秒钟来保存。 HSQLDB内存数据源中的数字稍差一些。我已经尝试了关于刷新会话等的指示,但这些只会增加所需的时间。
加快这6000个物体的批量插入的最佳解决方案是什么?会放弃GORM并直接编写SQL插入语句显着更快?
// data is an array of about 6,000 domain objects
data.each { item ->
item.save()
}