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
is a separate column; ignore the contents of the
Create_options column, which may contain the
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
InnoDB has two different file formats (Antelope and Barracuda) and four different row formats (Redundant, Compact, Dynamic, and Compressed). The Antelope file format contains Redundant and Compact row formats. A tablespace that uses the Barracuda file format uses either the Dynamic or Compressed row format.
File and row format information is written in 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 MySQL
The first 6 bits of the tablespace flags can be described this way:
Bit 0: Zero for Antelope and no other bits will be set. One for Barracuda, and other bits may be set.
Bits 1 to 4: A 4 bit number representing the compressed page size. zero = not compressed, 1 = 1k, 2 = 2k, 3 = 4k, 4 = 8k.
Bit 5: Same value as Bit 0, zero for Antelope, and one for Barracuda. If Bit 0 and Bit 5 are set and Bits 1 to 4 are not, the row format is “Dynamic”.
Until MySQL 5.6, no other bits are set in the tablespace flags. If bits 6 to 31 are not zero, the tablespace is corrupt or is not an InnoDB tablespace file.