批量处理---提高处理速度
生活随笔
收集整理的這篇文章主要介紹了
批量处理---提高处理速度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
批量處理JDBC語句提高處理速度。
????當需要成批插入或者更新記錄時。可以采用Java的批量更新機制,這一機制允許多條語句一次性提交給數據庫批量處理。
????通常情況下比單獨提交處理更有效率lJDBC的批量處理語句包括下面兩個方法:
????????addBatch(String):添加需要批量處理的SQL語句或是參數;
????????executeBatch():執行批量處理語句;
????通常我們會遇到兩種批量執行SQL語句的情況:
????????用Statement實現批量處理;
????????用PreparedStatement實現批量處理;
測試:
@Testpublic?void?testStatementBatch()?{Connection?conn?=?null;Statement?stmt?=?null;long?time?=?System.currentTimeMillis();String?sql?=?"";try?{conn?=?DBUtil.getCon();stmt?=?conn.createStatement();for?(int?i?=?0;?i?<?5000;?i++)?{sql?=?"INSERT?INTO?b_user(id,NAME,PASSWORD,age)?VALUES(1,'vincent','123456',1)";stmt.addBatch(sql);}stmt.executeBatch();System.out.println("mysql?Statement?batch?time="+?(System.currentTimeMillis()?-?time));}?catch?(Exception?e)?{//?TODO?Auto-generated?catch?blocke.printStackTrace();}?finally?{DBUtil.close(conn,?stmt,?null);}}輸出結果為:mysql Statement batch time=147716
?
@Testpublic?void?testPreparedStatementBatch()?{Connection?conn?=?null;PreparedStatement?pstmt?=?null;conn?=?DBUtil.getCon();String?sql?=?"INSERT?INTO?b_user(id,NAME,PASSWORD,age)?VALUES(?,?,?,?)";long?time?=?System.currentTimeMillis();try?{pstmt?=?conn.prepareStatement(sql);for?(int?i?=?0;?i?<?5000;?i++)?{pstmt.setInt(1,?1);pstmt.setString(2,?"t");pstmt.setString(3,?"t");pstmt.setInt(4,?1);pstmt.addBatch();if(i%500==0){//防止內存溢出pstmt.execuBatch();pstmt.clearBatch();}}pstmt.executeBatch();System.out.println("mysql?Preparedstatement?batch?time="+?(System.currentTimeMillis()?-?time));}?catch?(Exception?e)?{//?TODO?Auto-generated?catch?blocke.printStackTrace();}?finally?{DBUtil.close(conn,?pstmt,?null);}}輸出結果為:mysql Preparedstatement batch time=152905
?
輸出結果為:no batch:120776
怎么看著用批量處理比不是用批量處理還慢呢。
如果使用Oracle并結合使用batch,那么效率是成倍增長的
總結
以上是生活随笔為你收集整理的批量处理---提高处理速度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MYSQL驱动包升级到5.1.17版本之
- 下一篇: Unable to find 'stru