2012-06-26 81 views
0

我已經編寫了一個應用程序,該應用程序使用JDBC驅動程序4將數據從SQL Server數據庫中的兩個視圖歸檔到另一個SQL Server數據庫中的不同表中。我擔心的是應用。在數據庫之間歸檔數據

大約需要13分鐘將20封郵件及其附件(僅限名稱和鏈接信息)歸檔,數據由20個郵件組成。

列概述

smallint(6) 
datetime 
int(11) 
varchar(255) 
varchar(100) 
varchar(100) 
varchar(100) 
text 
int(11) 

int(11) 
varchar(255) 
varchar(255) 
int(11) 

可有人請給我指點至於如何做出更好的性能? 並告訴我,上面給出的運行時間是否可以接受。 (我知道這依賴於 情況,應用程序意味着是一個POC)。

事情我簽出(EDIT)

我讀過關於自動提交一些帖子,說你可以禁用它來提高性能。我首先檢查了Java TUTS找到下面的鏈接

http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html#disable_auto_commit

在文章提交說明。當我在其中一個例子中檢查for循環時,在每次更新結束時使用commit,這是合乎邏輯的。但是在每次插入之後使用自動提交和提交之間有什麼區別?

我正在使用準備好的語句來插入到存檔數據庫。使用調試器

我已經使用Eclipse調試器精確定位在瓶頸位於後

信息。

代碼掛在下面的代碼片段:

 while(rs.next()) 
     { 
      rows = new ArrayList(); 
      for(int collomnCount = 1; collomnCount <= rsmd.getColumnCount(); collomnCount++) 
      { 
       Object fields = rs.getObject(collomnCount); 
       rows.add(fields); 
      } 
      table.add(rows); 
      this.table = table; 
     } 

我用這個方法,使從結果更accessable我的信息。 有沒有辦法解決這個問題?

+0

交易?預處理語句? – hovanessyan

+2

它太慢了。你的觀點太慢了嗎?嘗試直接在數據庫中運行查詢。 – Andy

+0

也許你的POC有一個糟糕的設計,所以它的表現不好。嘗試使用分析器檢查應用程序中的瓶頸。 –

回答

0

衡量,隔離,改進。

所有性能改進都經歷一個週期。問題在於你測量的水平太高,而不是隔離,所以你不知道要改進什麼。由於缺乏工作流程,您正在尋找可能(或可能不適用)您的情況的「可能的問題」。

應用程序中有多少時間,以及數據庫中有多少時間?你的應用有多少請求?這些請求是否屬於類別?他們中的任何一個都需要很長時間?您的應用程序發出請求並處理響應,花費最多的時間來完成請求,等待答覆或處理響應?

只要你對什麼是放慢你的應用程序的想法,那麼你知道去哪裏看。

而且,查詢不提交。更新,插入和刪除提交。