sql >> データベース >  >> RDS >> Oracle

結果セットのフェッチ中のOracleJDBCメモリ割り当て

    Oracle Database JDBCドライバー、12より前のバージョン:

    ドライバは、各列の最大サイズにfetchSizeの行数を掛けたものを割り当てます。 クエリを実行する前。

    たとえば、VARCHAR(4000)の場合 列は、fetchSizeの8kバイトを割り当てます 。


    バージョン12(およびそれ以降):

    fetchSizeの行ごとに列ごとに約15バイトを割り当てます クエリを実行する前。実行後、バージョン12のドライバーは、実際の行データを格納するために必要な量だけを割り当てます。

    その結果、バージョン12のドライバーは通常、以前のバージョンのドライバーよりも大幅に少ないメモリを使用します。


    あなたの例

    あなたの例では、VARCHAR(20) 最大40バイト、NUMBER 最大22バイトでVARCHAR(100)にすることができます 100バイトもの大きさ。 fetchSizeを使用 100に設定すると、古いドライバーは(40 + 22 + 100) * 100 = 16kを割り当てます。 。バージョン12のドライバーは、3 * 15 * 100 = 4.5kを割り当てます。 。私が無視している両方のドライバーに追加のオーバーヘッドがあります。



    1. SQL Serverで「smalldatetime」を「date」に変換する(T-SQLの例)

    2. 負の値を必要とするMYSQLでCHECK制約を作成するにはどうすればよいですか?

    3. MySQLでインデックスの名前を変更するにはどうすればよいですか

    4. データベーステーブルにいくつかのレコードがあるかどうかを確認する最速の方法は?