Currently, XtraDB/InnoDB can store files in two formats, Antelope and Barracuda. The innodb_file_format server system variable determines the file format. By default it is set to Antelope. The default between MySQL 5.5.0 and 5.5.6 was Barracuda, but this could cause replication problems in certain cases when upgrading, so the default format in MariaDB has always been Antelope.

The system tablespace uses the Antelope file format, and it cannot be changed. For this reason, in order to use Barracuda for user tables, it is necessary to set the innodb_file_per_table variable.

MariaDB starting with 10.0

Since MariaDB 10.0, the file format in use can be seen in the Information Schema INNODB_SYS_TABLES table.

Compatibility

Each tablespace is tagged with the id of the most recent file format used by one of its tables. All versions of XtraDB/InnoDB can read tables that use an older file format. However, it can not read from more recent formats. For this reason, each time XtraDB/InnoDB opens a table it checks the tablespace's format, and returns an error if a newer format is used.

This check can be skipped via the innodb_file_format_check variable. Beware that, is XtraDB/InnoDB tries to repair a table in an unknown format, the table will be corrupted! This happens on restart if innodb_file_format_check is disabled and the server crashed, or it was closed with fast shutdown.

To downgrade a table from the Barracuda format to Antelope, the table's ROW_FORMAT can be set to a value supported by Antelope, via an ALTER TABLE statement. This recreates the indexes.

The Antelope format can be used to make sure that tables work on MariaDB and MySQL servers which are older than 5.5.

Note that the tablespace is tagged with the lowest file format that supports the row format in use. So, even if Barracuda is enabled, tables that use the Compact or Redundant row formats will be tagged as Antelope.

Antelope

Antelope is the original InnoDB file format, supporting COMPACT and REDUNDANT row formats, but not dynamic or compressed row formats.

Barracuda

Barracuda is a newer InnoDB file format, supporting COMPACT, REDUNDANT, DYNAMIC and COMPRESSED row formats. Tables with large BLOB or TEXT columns in particular could benefit from the dynamic row format.

Future formats

XtraDB/InnoDB might use new file formats in the future. Each format will have an identifier from 0 to 25, and a name. The names have already been decided, and are animal names listed in an alphabetical order: Antelope, Barracuda, Cheetah, Dragon, Elk, Fox, Gazelle, Hornet, Impala, Jaguar, Kangaroo, Leopard, Moose, Nautilus, Ocelot, Porpoise, Quail, Rabbit, Shark, Tiger, Urchin, Viper, Whale, Xenops, Yak and Zebra.

See also

Comments

Comments loading...