批量处理---提高处理速度
生活随笔
收集整理的這篇文章主要介紹了
批量处理---提高处理速度
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
批量處理JDBC語(yǔ)句提高處理速度。
????當(dāng)需要成批插入或者更新記錄時(shí)。可以采用Java的批量更新機(jī)制,這一機(jī)制允許多條語(yǔ)句一次性提交給數(shù)據(jù)庫(kù)批量處理。
????通常情況下比單獨(dú)提交處理更有效率lJDBC的批量處理語(yǔ)句包括下面兩個(gè)方法:
????????addBatch(String):添加需要批量處理的SQL語(yǔ)句或是參數(shù);
????????executeBatch():執(zhí)行批量處理語(yǔ)句;
????通常我們會(huì)遇到兩種批量執(zhí)行SQL語(yǔ)句的情況:
????????用Statement實(shí)現(xiàn)批量處理;
????????用PreparedStatement實(shí)現(xiàn)批量處理;
測(cè)試:
@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);}}輸出結(jié)果為: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){//防止內(nèi)存溢出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);}}輸出結(jié)果為:mysql Preparedstatement batch time=152905
?
輸出結(jié)果為:no batch:120776
怎么看著用批量處理比不是用批量處理還慢呢。
如果使用Oracle并結(jié)合使用batch,那么效率是成倍增長(zhǎng)的
總結(jié)
以上是生活随笔為你收集整理的批量处理---提高处理速度的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MYSQL驱动包升级到5.1.17版本之
- 下一篇: Unable to find 'stru