Що таке файл 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(). Ця структура виникає один раз у файлі.
- base: База написана 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).