Grails 3:批量插入性能问题

时间:2018-06-07 00:15:00

标签: mysql grails gorm bulkinsert

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秒。

我不确定问题是什么或我出错的地方。有什么想法吗?

0 个答案:

没有答案