项目上线测试。产品说导入太慢了,一样的数据量另外一个系统只需要1分钟,我们要5分钟。。。。
开始以为是因为POI在解析07版本的Excel时候,因为数据量太多所以慢了,后面看下日志,发现是在入库的时候花的时间。
原因:
原来的更新不是批量执行,是一条条执行,所以太慢了
try { conn.setAutoCommit(false); for (String sql : sqllist) { stmt = conn.prepareStatement(sql); recentSql = sql; stmt.executeUpdate(); stmt.close(); } conn.commit(); flag = true; }
优化:
先把批量的sql添加到列表中,再一次性提交执行
try {// 关闭事务自动提交 conn.setAutoCommit(false); stmt = conn.createStatement(); Long startTime = System.currentTimeMillis(); for (String sql : sqllist) { // 把一个SQL命令加入命令列表 stmt.addBatch(sql); } // 执行批量更新 stmt.executeBatch(); // 语句执行完毕,提交本事务 conn.commit(); flag = true; Long endTime = System.currentTimeMillis(); log.info("用时:" + (endTime - startTime)); }