2012-06-26 43 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

衡量,隔离,改进。

所有性能改进都经历一个周期。问题在于你测量的水平太高,而不是隔离,所以你不知道要改进什么。由于缺乏工作流程,您正在寻找可能(或可能不适用)您的情况的“可能的问题”。

应用程序中有多少时间,以及数据库中有多少时间?你的应用有多少请求?这些请求是否属于类别?他们中的任何一个都需要很长时间?您的应用程序发出请求并处理响应,花费最多的时间来完成请求,等待答复或处理响应?

只要你对什么是放慢你的应用程序的想法,那么你知道去哪里看。

而且,查询不提交。更新,插入和删除提交。