我编写了一个应用程序,该应用程序使用 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 中的信息对我来说更易于访问。
有没有解决的办法?