0

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

归档 20 条消息及其附件(仅名称和链接信息)总共需要大约 13 分钟。数据由 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)。

我检查的东西(编辑)

我读过一些关于自动提交的帖子,说你可以禁用它来提高性能。我首先检查了 Java tuts 以找到以下链接

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

在文章中解释了提交。当我检查其中一个示例中的 for 循环时,每次更新结束时都会使用提交,这是合乎逻辑的。但是每次插入后使用自动提交和提交有什么区别?

我正在使用准备好的语句来插入存档数据库。

使用调试器后的信息

我已经使用 eclipse 调试器来查明瓶颈所在的位置。

代码挂在以下片段:

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

我使用此方法使 ResultSet 中的信息对我来说更易于访问。

有没有解决的办法?

4

1 回答 1

0

衡量、隔离、改进。

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

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

一旦你知道是什么让你的应用程序变慢了,那么你就知道去哪里找了。

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

于 2012-06-26T14:26:58.137 回答