grails3:批量插入性能问题

kx5bkwkv  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(280)

grails版本:3.3.2
我有10万条记录,我从一个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秒。
我不确定问题是什么,也不知道我错在哪里。有什么想法吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题