環境:准備測試前,我查看了一下我公司的電腦是4核的(四個子窗口)

廢話少說,直接附上代碼和結果吧
package tenThreadInsert;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;
public class MyThread extends Thread{
public void run() {
String url = "jdbc:mysql://127.0.0.1/teacher";
String name = "com.mysql.jdbc.Driver";
String user = "root";
String password = "123456";
Connection conn = null;
try {
Class.forName(name);
conn = DriverManager.getConnection(url, user, password);//獲取連接
conn.setAutoCommit(false);//關閉自動提交,不然conn.commit()運行到這句會報錯
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
// 開始時間
Long begin = new Date().getTime();
// sql前綴
String prefix = "INSERT INTO test_teacher (t_name,t_password,sex,description,pic_url,school_name,regist_date,remark) VALUES ";
try {
// 保存sql后綴
StringBuffer suffix = new StringBuffer();
// 設置事務為非自動提交
conn.setAutoCommit(false);
// 比起st,pst會更好些
PreparedStatement pst = (PreparedStatement) conn.prepareStatement("");//准備執行語句
// 外層循環,總提交事務次數
for (int i = 1; i <= 10; i++) {
suffix = new StringBuffer();
// 第j次提交步長
for (int j = 1; j <= 100000; j++) {
// 構建SQL后綴
suffix.append("('" +i*j+"','123456'"+ ",'男'"+",'教師'"+",'www.bbb.com'"+",'Java大學'"+",'"+"2016-08-16 14:43:26"+"','備注'" +"),");
}
// 構建完整SQL
String sql = prefix + suffix.substring(0, suffix.length() - 1);
// 添加執行SQL
pst.addBatch(sql);
// 執行操作
pst.executeBatch();
// 提交事務
conn.commit();
// 清空上一次添加的數據
suffix = new StringBuffer();
}
// 頭等連接
pst.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
// 結束時間
Long end = new Date().getTime();
// 耗時
System.out.println("100萬條數據插入花費時間 : " + (end - begin) / 1000 + " s"+" 插入完成");
}
}
測試代碼
package tenThreadInsert;
public class Test {
public static void main(String[] args) {
for (int i = 1; i <=10; i++) {
new MyThread().start();
}
}
}
運行結果:

數據庫的結果:

看到了吧,確實插入了1000萬條,准確無誤
然后我就想試試20個線程,每個線程插入50萬條數據看看性能怎么樣。結果如下:

線程越多不是好事,反而更慢。。。
當線程達到100個,每個線程插入10萬條數據直接是堆內存溢出

好了,測試就到此結束,想交流的可以加群一起探討技術: 494389786
