JDBC ドライバー 4 を使用して、Java で SQL Server データベース内の 2 つのビューから別の 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
記事では commit について説明しています。例の 1 つで 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 からの情報にアクセスしやすくしています。
これを回避する方法はありますか?