After you enable a given
innodb_file_format
, this
change applies only to newly created tables rather than existing
ones. If you do create a new table, the tablespace containing the
table is tagged with the “earliest” or
“simplest” file format that is required for the
table's features. For example, if you enable file format
“Barracuda”, and create a new table that is not compressed and
does not use ROW_FORMAT=DYNAMIC
, the new tablespace that
contains the table is tagged as using file format “Antelope”.
It is easy to identify the file format used by a given tablespace
or table. The table uses the “Barracuda” format if the
Row_format
reported by SHOW CREATE
TABLE
or INFORMATION_SCHEMA.TABLES
is
one of 'Compressed'
or
'Dynamic'
. (The Row_format
is a separate column; ignore the contents of the
Create_options
column, which may contain the
string ROW_FORMAT
.) If the table in a tablespace uses neither of
those features, the file uses the format supported by prior
releases of InnoDB, now called file format “Antelope”. Then, the
Row_format
is one of
'Redundant'
or 'Compact'
.
Internal Details
The file format identifier is written as part of the tablespace
flags (a 32-bit number) in the *.ibd
file in
the 4 bytes starting at position 54 of the file, most significant
byte first. (The first byte of the file is byte zero.) On some
systems, you can display these bytes in hexadecimal with the
command od -t x1 -j 54 -N 4
. If all bytes
are zero, the tablespace uses the “Antelope” file format (which
is the format used by the standard InnoDB storage engine up to
version 5.1). Otherwise, the least significant bit should be set
in the tablespace flags, and the file format identifier is written
in the bits 5 through 11. (Divide the tablespace flags by 32 and
take the remainder after dividing the integer part of the result
by 128.)
tablename
.ibd