13.4.4.2 FetchSize
このプロパティは、OracleDataReader
の内部キャッシュのサイズを指定し、結果セットのデータを格納します。
宣言
// C# public long FetchSize {get; set;}
プロパティ値
OracleRefCursor
内部キャッシュのサイズ(バイト)を指定するlong
です。
例外
ArgumentException
- 指定したFetchSize
値は無効です。
備考
デフォルト = 131072
FetchSize
プロパティ値はOracleRefCursor
オブジェクトを作成したOracleCommand
に継承されます。OracleDataReader
オブジェクトのFetchSize
プロパティは、OracleRefCursor
がデータベース・ラウンドトリップごとに内部キャッシュにフェッチするデータ量を定義します。
このプロパティは、REF
CURSOR
のデータのフェッチ方法の制御を提供するため、OracleDataAdapter
を介して、DataSet
またはDataTable
を入力する際に明示的にOracleRefCursor
を使用する場合に有用です。
OracleDataReader
オブジェクトがOracleRefCursor
から作成される場合、作成したOracleDataReader
オブジェクトは、OracleDataReader
オブジェクトのFetchSize
値を継承します。ただし、OracleDataReader
FetchSize
プロパティを設定して、結果セットに対してOracleDataReader
Read
メソッドを最初に呼び出す前に継承した値を設定すると、その値はオーバーライドされます。
RowSize
およびFetchSize
プロパティは、他のスカラー・データ型とは異なる方法でUDTおよびXMLType
データを処理します。ODP.NETの内部キャッシュにはUDTおよびXMLType
データへの参照のみが格納されているため、RowSize
プロパティはUDTおよびXMLType
データの実際のサイズではなく、参照に必要なメモリー(非常に少量)のみを算定します。その結果、アプリケーションは1回のデータベース・ラウンドトリップで多数のUDTまたはXMLType
インスタンスをデータベースからフェッチしてしまう可能性があります。これは、UDTおよびXMLType
データの実際のサイズがFetchSize
に対するものではなく、デフォルトのキャッシュ・サイズである131072バイトを満たすには非常に多くのUDTおよびXMLType
参照が必要となるためです。したがって、UDTまたはXMLType
データをフェッチする際には、フェッチする実際のUDTおよびXMLType
データの総量ではなく、対象UDTおよびXMLType
インスタンスの数を制御するよう、FetchSize
プロパティを適切に構成する必要があります。
注意: LOBおよびLONG
データ型の場合、選択リストの各LOBのキャッシュによって保持されたメタデータおよび参照情報に加えて、InitialLOBFetchSize
およびInitialLONGFetchSize
プロパティで指定されたサイズのみがRowSize
プロパティによって算定されます。