Spec-Zone .ru
спецификации, руководства, описания, API

5.4.7.3. Идентификация Формата файла в Использовании

После того, как Вы включаете данному innodb_file_format, это изменение применяется только к недавно составленным таблицам, а не существующим. Если Вы действительно составляете новую таблицу, табличная область, содержащая таблицу, тегируется с "самым ранним" или "самым простым" форматом файла, который требуется для функций таблицы. Например, если Вы включаете Барракуде формата файла, и составляете новую таблицу, которая не сжимается и не использует ROW_FORMAT=DYNAMIC, новая табличная область, которая содержит таблицу, тегируется как использующий Антилопу формата файла.

Легко идентифицировать формат файла, используемый данной табличной областью или таблицей. Таблица использует формат Барракуды если Row_format сообщаемый SHOW CREATE TABLE или INFORMATION_SCHEMA.TABLES один из 'Compressed' или 'Dynamic'. ( Row_format отдельный столбец; проигнорируйте содержание Create_options столбец, который может содержать строку ROW_FORMAT.), Если таблица в табличной области не использует ни одну из тех функций, файл использует формат, поддерживаемый предшествующими выпусками InnoDB, теперь названного Антилопой формата файла. Затем, Row_format один из 'Redundant' или 'Compact'.

Внутренние Детали

У InnoDB есть два различных форматов файлов (Антилопа и Барракуда) и четыре различных формата строки (Избыточный, Компактный, Динамичный, и Сжатый). Формат файла Антилопы содержит Избыточные и Компактные форматы строки. Табличная область, которая использует формат файла Барракуды, использует или Динамический или Сжатый формат строки.

Информация о формате файла и строки пишется во флагах табличной области (32-разрядное число) в *.ibd файл в 4 байтах, запускающихся в позиции 54 из файла, старший значащий байт сначала (первый байт файла является нулем байта). На некоторых системах можно вывести на экран эти байты в шестнадцатеричном с командой od -t x1 -j 54 -N 4 tablename.ibd. Если все байты являются нулем, табличная область использует формат файла Антилопы, который является форматом, используемым стандартным механизмом хранения InnoDB до версии 5.1. У системной табличной области всегда будет нуль во флагах табличной области.

Первые 10 битов флагов табличной области могут быть описаны этот путь:

Отметить

Флаги табличной области подобны табличным флагам, найденным в таблице словаря InnoDB,"SYS_TABLES". Они отличаются по значению бита 0 и битов 6 - 10. Табличные флаги установят бит 0 в тот, если формат строки определенной таблицы будет "Компактен". Флаги табличной области не могут сделать этого, так как системная табличная область может содержать и Избыточные и Компактные форматы строки. Так, для флагов табличной области бит 0 и бит 5 всегда являются тем же самым значением.

Табличные флаги могут быть просмотрены, давая команду:

SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_TABLES;

Первые 7 битов табличных флагов могут быть описаны этот путь:

Если биты 7 - 31 не являются нулем, таблица повреждена или SYS_TABLES запись повреждена, и таблица не может использоваться.