Java 在数据库之间归档数据

Java 在数据库之间归档数据,java,sql-server,jdbc,Java,Sql Server,Jdbc,我编写了一个应用程序,它使用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(

我编写了一个应用程序,它使用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)

我签出的内容(编辑)

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

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

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

使用调试器后的信息

我使用了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;
        }
while(rs.next())
{
行=新的ArrayList();

对于(int columnCount=1;columnCount测量、隔离、改进

所有的绩效改进都会经历一个周期。问题是你的衡量水平太高,没有孤立,因此你不知道要改进什么。由于缺乏工作流程,你在寻找可能(或可能不)适用于你的情况的“可能的问题”

有多少时间在应用程序中,有多少时间在数据库中?您的应用程序发出了多少请求?这些请求是否属于类别?是否有任何请求占用了大量时间?您的应用程序发出请求并处理响应,在发出请求、等待或者回复,或者处理回复

一旦您知道是什么在减慢您的应用程序,那么您就知道应该在哪里查找


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

事务?PreparedStatements?速度太慢。您的视图是否太慢?请尝试直接在数据库中运行查询。可能您的POC设计不好,因此性能很差。请尝试使用探查器检查应用程序中的瓶颈。