for (int i = 0; i < 100000; i++) { dbHelper.insert("INSERT aaa(name) Values ('1')"); }
運行時間==780450ms
conn = getConn(); // JAVA默認為TRUE,我們自己處理需要設置為FALSE,並且修改為手動提交,才可以調用rollback()函數 conn.setAutoCommit(false); st = conn.createStatement(); long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { st.execute("INSERT bbb(name) Values ('1')"); } // 事務提交 conn.commit(); long end = System.currentTimeMillis(); System.out.println("運行時間==" + (end - start) + "ms");
運行時間==21484ms
conn = getConn(); // JAVA默認為TRUE,我們自己處理需要設置為FALSE,並且修改為手動提交,才可以調用rollback()函數 conn.setAutoCommit(false); st = conn.createStatement(); long start = System.currentTimeMillis(); for (int i = 0; i < 100000; i++) { st.addBatch("INSERT ccc(name) Values ('1')"); } st.executeBatch(); // 事務提交 conn.commit();
運行時間==21524ms
在mysql鏈接后加上如下參數,代碼和上面的完全相同,結果速度快了很多
&rewriteBatchedStatements=true
運行時間==8216ms
而我在第二種方法的連接上加上&rewriteBatchedStatements=true,結果運行結果和原來相差無幾
運行時間==21538ms
參考鏈接: