マルチスレッドで1分間に1000万個のデータを挿入


まずスレッドクラスを構築し,Threadクラスを継承しrunメソッドを実現する必要がある.
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();
           }
    }

}