Early versions of InnoDB used an unnamed file format (now called
“Antelope”) for database files. With that format, tables were
defined with ROW_FORMAT=COMPACT
(or ROW_FORMAT=REDUNDANT
) and
InnoDB stored up to the first 768 bytes of variable-length
columns (such as BLOB
and
VARCHAR
) in the index record within the B-tree
node, with the remainder stored on the overflow page(s).
To preserve compatibility with those prior versions, tables
created with the InnoDB storage engine use the prefix format, unless one
of ROW_FORMAT=DYNAMIC
or ROW_FORMAT=COMPRESSED
is specified
(or implied) on the CREATE TABLE
statement.
With the “Antelope” file format, if the value of a column is 768
bytes or less, no overflow page is needed, and some savings in I/O
may result, since the value is in the B-tree node. This works well
for relatively short BLOB
s, but may cause
B-tree nodes to fill with data rather than key values, thereby
reducing their efficiency. Tables with many
BLOB
columns could cause B-tree nodes to become
too full of data, and contain too few rows, making the entire
index less efficient than if the rows were shorter or if the
column values were stored off-page.