TADFormatOptions.InlineDataSize Property

Controls how character or byte string values are stored in record buffer.


Use InlineDataSize to control how character or byte string values are stored in record buffer. The default value is 1000 bytes. 

If the dtAnsiString, dtWideString, dtByteString field values are less than or InlineDataSize, then FireDAC stores field values inside of record buffer (inline storage). If equal or greater, then record buffer will keep pointer to the exactly allocated memory space for field value (exact storage). 

An inline storage offers good performance at data fetching, but may use much more memory, than an exact storage. A good performance, because no need to allocate a memory for each string value and allows to streamline a rowset fetching. Uses more memory, because following. For example, a column in a table is declared as VARCHAR(2000). But some record field has 50 characters long value. An inline storage uses 2000 character long space for a value storage, while only 50 characters is required. While exact storage allocates 50 characters long space and stores pointer to this space inside of record buffer. 

Also, long string values (BLOB's) always are stored using exact storage.

property InlineDataSize: Integer;
What do you think about this topic? Send feedback!