After you enable a given
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
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”.
Tablespace flags are similar to table flags found in the InnoDB
dictionary table, “
They differ in the meaning of bit 0. Table flags will set bit 0
to one if the row format of a particular table is
“Compact”. Tablespace flags cannot do that because
the system tablespace can contain both Redundant and Compact row
formats. So for tablespace flags, bit 0 and bit 5 are always the
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.
Table flags can be viewed by issuing the following command:
SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;
The first 6 bits of the table flags can be described this way:
Bit 0: Zero for Redundant row format and no other bits will be set. One for Compact row format, bits 1 to 5 may be set.
Bits 1 to 4: A 4 bit number representing the compressed page size. 0 = not compressed, 1 = 1k, 2 = 2k, 3 = 4k, 4 = 8k.
Bit 5: Zero for Antelope file format, and one for Barracuda file format. If bit 5 is set and bits 1 to 4 are not, the row format is Dynamic. Also, if bit 5 is set, bit 0 must also be set.
If bits 6 to 31 are not zero, the table is corrupt or the
SYS_TABLES record is corrupt and the table
cannot be used.