項目上線測試。產品說導入太慢了,一樣的數據量另外一個系統只需要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)); }