FetchSize

このプロパティは、1回のデータベース・ラウンドトリップでフェッチしたデータをプロバイダがキャッシュするために割り当てる合計メモリー・サイズをバイト単位で指定します。これは、結果セット・データを格納するためにOracleDataReaderの内部キャッシュによって使用されます。

宣言

// C#
public long FetchSize { get; set;}

プロパティ・タイプ

System.Int64 (long)

例外

InvalidArgument - 指定された値が0未満であるか、System.Int64.MaxValueを超えています。

System.ObjectDisposedException - OracleConnectionオブジェクトがすでに破棄されている場合は、このプロパティにアクセスできません。

備考

デフォルト値は131072です。

FetchSizeプロパティは、OracleDataReaderOracleCommandOracleConnectionおよびOracleConfigurationオブジェクトで構成できます。デフォルトでは、OracleConnection FetchSizeプロパティ値は構成時にOracleConfiguration FetchSizeプロパティ値を継承し、OracleCommand FetchSizeプロパティ値は構成時にOracleConnection FetchSizeプロパティ値を継承し、OracleDataReader FetchSizeプロパティ値はコマンド実行時にOracleCommand FetchSizeプロパティ値を継承します。OracleDataReader FetchSizeの値により、OracleDataReaderがデータベース・ラウンドトリップごとに内部キャッシュにフェッチするデータ量が決定されます。

OracleCommand XmlCommandTypeプロパティがNone以外の値に設定されている場合、このプロパティは無視されます。

OracleCommand RowSizeおよびOracleCommand FetchSizeプロパティは、他のスカラー・データ型とは異なる方法でUDTおよびXMLTypeデータを処理します。ODP.NETの内部キャッシュにはUDTおよびXMLTypeデータへの参照のみが格納されているため、OracleCommand RowSizeプロパティは、UDTおよびXMLTypeデータの実際のサイズではなく、参照に必要なメモリー(非常に少量)のみを算定します。その結果、アプリケーションは1回のデータベース・ラウンドトリップで多数のUDTまたはXMLTypeインスタンスをデータベースからフェッチしてしまう可能性があります。これは、UDTおよびXMLTypeデータの実際のサイズがFetchSizeに対するものではなく、デフォルトのキャッシュ・サイズである131072バイトを満たすには非常に多くのUDTおよびXMLType参照が必要になるためです。したがって、UDTまたはXMLTypeデータをフェッチする際は、フェッチする実際のUDTおよびXMLTypeデータの量ではなく、フェッチするUDTおよびXMLTypeインスタンスの数を制御するように、FetchSizeプロパティを適切に構成する必要があります。

ノート:

LOBおよびLONGデータ型の場合、選択リストの各LOBのキャッシュによって保持されたメタデータおよび参照情報に加えて、OracleCommand InitialLOBFetchSizeおよびOracleCommand InitialLONGFetchSizeプロパティで指定されたサイズのみがRowSizeプロパティによって算定されます。