Java 在数据库之间归档数据
我编写了一个应用程序,它使用JDBC驱动程序4将SQL Server数据库中两个视图的数据归档到Java中另一个SQL Server数据库中的不同表中。我关心的是应用程序的性能 将20封邮件及其附件(仅名称和链接信息)归档大约需要13分钟。数据总共由20列组成 专栏概览: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(
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设计不好,因此性能很差。请尝试使用探查器检查应用程序中的瓶颈。