web-dev-qa-db-ja.com

JDBCにはResultSetの最大サイズがありますか?

JDBCが特にHiveクエリからResultSetに入れる行の最大数はありますか?フェッチサイズやページングについてではなく、ResultSetで返される行の総数について説明しています。

私が間違っている場合は訂正してください。ただし、フェッチサイズは、jdbcがデータベースの各パスで処理する行数を設定し、適切な応答をResultSetに挿入します。テーブル内のすべてのレコードを処理すると、ResultSetがJavaコードに返されます。 Javaコードに返される行数に制限があるかどうかを尋ねています。

最大行数がない場合、一部のレコードが削除される可能性のあるクラスに固有の何かがありますか?

13
sparks

いいえ、そのようには機能しません。 JDBCは、ネイティブデータベースの単なるラッパーです。ただし、JDBCカーソルまたはデータベースカーソルは同じように機能します。

  • (JDBCを介して)データベースにクエリを送信します
  • データベースはクエリを分析し、カーソルを初期化します(JDBCのResulSet)
  • resultSetからデータをフェッチしている間、データベースソフトウェアはデータベース内を歩き、新しい行を取得してResultSetにデータを入力します。

したがって、ResultSetに含めることができる行の数にも、Javaクライアントプログラムが処理できる行の数にも制限はありません。唯一の制限は、すべてをロードしようとした場合に発生します。たとえば、リストにデータを入力してクライアントアプリケーションメモリを使い果たすためのメモリ内の行。ただし、行を処理してメモリに保持しない場合、制限はありません(ファイルを読み取ったときに発生するのとまったく同じです)。 )。

19
Serge Ballesta