FireDAC.Stan.Option.TFDFormatOptions.InlineDataSize
Delphi
property InlineDataSize: Integer read GetInlineDataSize write
C++
__property int InlineDataSize = {read=GetInlineDataSize, write=SetInlineDataSize, stored=IsIDSS, default=1000};
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
property | published | FireDAC.Stan.Option.pas FireDAC.Stan.Option.hpp |
FireDAC.Stan.Option | TFDFormatOptions |
説明
文字やバイト文字列値が、レコード バッファにどのように格納されるかを、制御します。 InlineDataSize を使用すると、文字やバイト文字列値が、レコード バッファにどのように格納されるかを、制御することができます。 デフォルト値は、1000 バイトです。
dtAnsiString
、dtWideString
、dtByteString
フィールド値が、InlineDataSize より少ない場合、FireDAC は、レコード バッファの内部にフィールド値を格納します(インライン ストレージ/inline storage)。フィールド値が InlineDataSize 以上の場合、レコード バッファは、フィールド値のために確保されたメモリ領域へのポインタを保持します(厳密ストレージ/exact storage)。
インライン ストレージは、データのフェッチ時によいパフォーマンスを提供しますが、厳密ストレージよりも大きなメモリ領域を使用する可能性があります。各文字列値に対してメモリ領域を確保する必要がないので、パフォーマンスは良く、これにより、ストリームラインや行セット フェッチが可能になります。これは、次のような理由のため、より大きなメモリ領域を使用します: たとえば、テーブル内の列は、VARCHAR(2000) として宣言されていますが、レコード フィールドには 50 文字長の値が入っているとします。インライン ストレージは、50 文字分の領域のみ必要としますが、2000 文字長の領域を値のストレージのために使用します。これに対し、厳密ストレージの場合、50 文字長の領域を確保し、レコード バッファの内部にこの領域へのポインタを格納します。
また、長い文字列値(BLOB)は、常に、厳密ストレージを使用して格納されます。