.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).