日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

批量处理---提高处理速度

發布時間:2024/9/16 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 批量处理---提高处理速度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

批量處理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
?

@Testpublic?void?testEff()?{Connection?conn?=?null;PreparedStatement?pstmt?=?null;long?time?=?System.currentTimeMillis();conn?=?DBUtil.getCon();String?sql?=?"INSERT?INTO?b_user(id,NAME,PASSWORD,age)?VALUES(?,?,?,?)";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.executeUpdate();}System.out.println("no?batch:"+(System.currentTimeMillis()-time));}?catch?(Exception?e)?{}}

輸出結果為:no batch:120776

怎么看著用批量處理比不是用批量處理還慢呢。

如果使用Oracle并結合使用batch,那么效率是成倍增長的

總結

以上是生活随笔為你收集整理的批量处理---提高处理速度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。