マルチスレッドで1分間に1000万個のデータを挿入
2514 ワード
まずスレッドクラスを構築し,Threadクラスを継承しrunメソッドを実現する必要がある.
1、データベース接続の取得
2、挿入したsql文を書く
3、自動コミットconn.settAutoCommit(false)をオフにする.
4、forループを作成し、その挿入方法と同じようにします.
5、注入した情報をpstに1本追加する.pst.addBatch();//一括追加情報
6、forループが終了したところで、情報を一括して実行する.pst.executeBatch();
7、取引conn.commit()を提出する.
8テストクラスの作成
1、データベース接続の取得
2、挿入したsql文を書く
3、自動コミットconn.settAutoCommit(false)をオフにする.
4、forループを作成し、その挿入方法と同じようにします.
5、注入した情報をpstに1本追加する.pst.addBatch();//一括追加情報
6、forループが終了したところで、情報を一括して実行する.pst.executeBatch();
7、取引conn.commit()を提出する.
public class InsertThread extends Thread {
public void run(){
String url = "jdbc:postgresql://localhost:5432/teacher"; //
String name = "org.postgresql.Driver";
String user = "postgres";
String password = "*****";//
Connection conn = null;
try {
Class.forName(name);
conn=DriverManager.getConnection(url, user, password);
conn.setAutoCommit(false);//
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
long begin=new Date().getTime();
String sql= "INSERT INTO teachers (t_name,t_password,sex,description,pic_url,school_name,regist_date,remark) VALUES(?,?,?,?,?,?,?,?)";
try {
StringBuilder sqls= new StringBuilder();
conn.setAutoCommit(false);
PreparedStatement pst=conn.prepareStatement(sql);
//
for(int i=1;i<=10;i++){
for(int j=1;j<=1000000;j++){
pst.setString(1,"teacher122");
pst.setString(2, "12223444");
pst.setString(3, " ");
pst.setString(4, " ");
pst.setString(5, "www.bbb.com");
pst.setString(6, "java ");
pst.setString(7, "2016-08-16 14:43:26");
pst.setString(8, " ");
pst.addBatch();//
}
//
pst.executeBatch();
//
conn.commit();
}
pst.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//
Long end = new Date().getTime();
//
System.out.println("100 : " + (end - begin) / 1000 + " s"+" ");
}
}
8テストクラスの作成
public class InsertTest {
/**
* @param args
*/
public static void main(String[] args) {
for (int i = 1; i <=10; i++) {
new InsertThread().start();
}
}
}