在数据库之间存档数据

时间:2012-06-26 13:57:23

标签: java sql-server jdbc

我编写了一个应用程序,它使用JDBC驱动程序4将SQL Server数据库中两个视图的数据存档到Java中另一个SQL Server数据库中的不同表。我关心的是应用程序的性能。

将20条消息及其附件(仅限名称和链接信息)归档需要大约13分钟,数据由20个colomns组成。

列概述

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。)

我签出的东西(编辑)

我已经阅读了一些关于自动提交的帖子,说你可以禁用它来提高性能。我首先检查了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;
        }

我使用此方法使ResultSet中的信息更易于访问。 有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

测量,分离,改进。

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

应用程序中有多少时间,数据库中有多少时间?您的申请提出了多少请求?这些请求是否属于类别?他们中的任何一个都花了很多时间吗?您的应用程序是否发出请求并处理响应,是否需要花费大量时间来处理请求,等待回复或处理响应?

只要您知道什么会降低您的应用程序速度,那么您就知道该去哪里看。

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