Grails版本:3.3.2
我有100k记录,我从CSV文件加载并尝试进行批量保存。我遇到的问题是批量保存比非批量保存更糟糕。
我所做的所有在线搜索基本上都使用与我引用的此网站相同的方法 http://krixisolutions.com/bulk-insert-grails-gorm/
我在页面上尝试了所有3个解决方案,以下是其中一个解决方案的示例:
def saveFsRawData(List<FactFsRawData> rawData) {
int startTime = DateTime.newInstance().secondOfDay;
println("Start Save");
Session session = sessionFactory.openSession();
Transaction tx = session.beginTransaction();
rawData.eachWithIndex{ FactFsRawData entry, int i ->
session.save(entry);
if(i % 1000 == 0) {
session.flush();
session.clear();
}
}
tx.commit();
session.close();
println("End Save - "+ (DateTime.newInstance().secondOfDay - startTime));
}
我尝试过100到5k的各种体积大小(在示例中使用1k)。所有这些都平均约80秒。
如果我完全删除批处理,那么我平均得到65秒。
我不确定问题是什么或我出错的地方。有什么想法吗?