aspose.info
RU

Формат файла MYI

Обновлено

.MYI вариант №

MYI также известен как индексный файл MySQL MyISAM. Он используется для хранения индексов для таблицы MyISAM MySQL. Индекс базы данных MySQL определяет структуру таблицы и содержит механизм контроля для проверки целостности таблиц.

Формат файла MYI

Файл MYI состоит из двух частей: заголовка и значений ключа.

Заголовок MYI

Заголовок содержит информацию об опциях, размерах файлов и ключах. Ключи в MySQL создаются с помощью такой команды, как

CREATE [UNIQUE] INDEX.

Файлы, которые читают и записывают файлы MYI, находятся в каталоге ./myisam. В нем есть следующие файлы:

  • mi_open.c: этот файл содержит подпрограммы, которые записывают каждый раздел заголовка.
  • mi_create.c: этот файл содержит подпрограммы, вызывающие подпрограммы mi_open.c.
  • myisamdef.h: этот файл содержит определения структуры.

В шапке есть следующие разделы:

  • состояние: состояние записывается mi_open.c, mi_state_info_write(). Эта структура встречается в файле один раз.
  • база: база написана mi_open.c, mi_base_info_write(). MI_BASE_INFO — это соответствующая структура для базы в myisamdef.h. Эта структура встречается в файле один раз.
  • keydef: keydef записывается mi_open.c, mi_keydef_write(). MI_KEYDEF — это структура, соответствующая keydef в myisamdef.h. Это многократная структура, которая появляется для каждого индекса.
  • recinfo: recinfo пишется mi_open.c, mi_recinfo_write(). MI_COLUMNDEF — это соответствующая структура для recinfo в myisamdef.h. Это структура множественного вхождения, которая появляется один раз для каждого поля, которое появляется в ключе.

Ключевые значения

Страницы в MySQL называются блоками. Ключевые значения находятся в блоках. Блок содержит информацию только из одного индекса. Каждый ключ содержит полное содержимое всех столбцов. Нормальная длина блока составляет 0x0400 (1024) байт. Указатель имеет номер фиксированного размера (4 байта) для таблиц с фиксированной строкой, который содержит порядковый номер строки. Если ключ нулевой, то байт равен 0x00. Обычный блок заполнен не менее чем на 65%, а обычно на 80%.

Файл myisamdef.h содержит следующую информацию, выраженную в константах. Максимальное количество ключей — 32 (MI_MAX_KEY), а максимальное количество сегментов в ключе — 16 (MI_MAX_KEY_SEG). Максимальная длина ключа — 500 (MI_MAX_KEY_LENGTH). Максимальная длина блока — 16384 (MI_MAX_KEY_BLOCK_LENGTH).

Использованная литература

См. также