1

ResultSet の働きを深く知りたいと思っています。ResultSet に関して多くの疑問があります。どちらが優れているかなどのパフォーマンス。

 while(rs.next())
{
  //  iterate as well as do call some other functions.
}
  or 
while(rs.next())
{
 // iterate and store the column values in a map
}
// do functions using the map.

テーブルは他の多くの並行プログラムによってアクセスされるためです。

4

2 に答える 2

1

それは多くの要因に依存します。

  • あなたの「他の機能」はどれほど処理集約的ですか。処理が最小限であれば、それは実際には問題ではありませんが、CPUの使用量が多いため、結果セットが閉じられるまで処理を遅らせると、トランザクションのパフォーマンスが向上します。
  • 結果セットの大きさはどれくらいですか?かなり小さい場合はマップに読み込むことは問題ありませんが、大きくて処理によって小さな形式に処理される場合は、ループ内で処理を行う方がよい場合があります。

無料のVisualVMのCPUとメモリのプロファイリングを確認するか、いくつかの基本的なタイミングを使用して、何が起こっているのかを把握してください。

于 2012-07-20T13:42:44.320 に答える
1

最善の方法は、一般的に従う標準は、すべての値をオブジェクトに格納してから、そのオブジェクトを返すことです。これは、データ転送オブジェクト (DTO 設計パターン) に他なりません。

最初のケースでは、あなたは次のようにやっています

  1. データベースへの接続を確立しています。
  2. いくつかの SQL ステートメントを実行し、結果セットを取得します。
  3. ResultSet の繰り返し。このステップでは、他の関数を呼び出す予定ですが、完了するまでにどれくらいの時間がかかるかわかりません。

    主な欠点は、接続オブジェクトを長時間保持するのは良くないことです。これは、他のユーザーが必要とする可能性があり、もちろん最もコストがかかるためです。

于 2012-09-24T06:08:38.080 に答える