由於要項目準備上線,所以要準備大量測試資料測試新項目的效能,但是又不太會用預存程序和資料庫事務進行資料插入。
最開始使用最簡單的java的for迴圈語句不停的add對象,但是發現這個效率太低,要插入幾百萬資料估計得一天,於是在網上找了下,找到一篇直接使用jdbc直接插入資料的,拿下來試了下發現效能雖然比new對象好,但是效率也很低。
只能再找,終於找到一個很高的,也就是使用批次提交方式的sql執行,這個100萬資料大概也就30秒左右。
[java] view plain copy print ? public static void insertRelease() { Long begin = new Date().getTime(); String sql = "INSERT INTO tb_big_data (count, create_time, random) VALUES (?, SYSDATE(), ?)"; try { conn.setAutoCommit(false); PreparedStatement pst = conn.prepareStatement(sql); for (int i = 1; i <= 100; i++) { for (int k = 1; k <= 10000; k++) { pst.setLong(1, k * i); pst.setLong(2, k * i); pst.addBatch(); } pst.executeBatch(); conn.commit(); } pst.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } Long end = new Date().getTime(); System.out.println("cast : " + (end - begin) / 1000 + " s"); }
原文地址:http://blog.csdn.net/frinder/article/details/38830723