1. 程式人生 > >批量往資料庫新增資料

批量往資料庫新增資料

聽老師提到,往資料庫中新增百萬,千萬條條的資料的所需時間。自己試著去看了下列印了零到十萬的所需時間,結果大概四分鐘的樣子。顯然對資料庫進行修改的話需要更多的時間。實際所需時間顯然也不可能是多開幾個執行緒就能解決的,於是乎去搜索了方法,找到了這個一串程式碼(修改過了)     

    Connection conn = getCon();      //獲取連線已經封裝過的方法
          try {    
               conn.setAutoCommit(false);    
               Long beginTime = System.currentTimeMillis();    
               //構造預處理statement   
               PreparedStatement pst = conn.prepareStatement("insert into ib1 values (?)");    
               //新增次數  
               for(int i=1;i<=10000;i++){       
                  pst.setInt(1, i);    
                  pst.addBatch();    
                 //每1000次提交一次   
                if(i%1000==0){//可以設定不同的大小;如50,100,500,1000等等    
                     pst.executeBatch();    
                     conn.commit();    
                     pst.clearBatch();    
                 }    
               }   
               Long endTime = System.currentTimeMillis();    
               System.out.println("pst+batch:"+(endTime-beginTime)/1000+"秒");    
               pst.close();    
               conn.close();    
              } catch (SQLException e) {    
                   e.printStackTrace();    
              }    
        }  

對照API看了下,大致就是先堆積大量的資料再一起提交。試了一下,如果是簡單的資料,即便新增百萬,千萬條資料也僅需要若干秒。但是這裡面的賦值 i ,我想的是依次賦值1-10000,但是實際上在資料庫中查詢這個表的資料時,第一條資料的值是並不是1,而是從一個範圍內的數開始,知道10000後才輪到1,想了半天也沒明白是為什麼。