2016-11-11 63 views
1

我應該做我的應用程序應力測試,我需要在表60萬條記錄插入數據。我的追蹤對象的方法是,首先我初始化連接類的實例,然後使用用於使用連接由的PreparedStatement循環,和之後每500行的插入在插入數據我提交的連接,並重置它。最快的方式使用JDBC

使用此功能,我可以每分鐘插入大約150條記錄。我只是想知道是否有做這樣的執行所需的時間是最小的

+1

使用Oracle公用事業調查批量插入或加載數據,而不是你的代碼。 –

+0

在循環中提交併不會提高Oracle的性能 - 情況正好相反。只在交易結束時提交一次。 –

+0

但是,每分鐘150行是***方式減慢。我可以用本地服務器(6列的窄表)獲得每分鐘大約100萬次 –

回答

2

使用JDBC批量插入的任何更優化的方式:

PreparedStatement ps = conn.prepareStatement(sql); 
int count = 0; 
for(loop construct here) { 
    count++; 
    ps.setString(1,someString); 
    // ... and so forth 
    ps.addBatch(); 

    if (count%500 ==0) 
     ps.executeBatch() 
} 
ps.executeBatch();