מהו קובץ MYI?
MYI ידוע גם כקובץ MySQL MyISAM Index. הוא משמש לאחסון אינדקסים עבור טבלת MyISAM על ידי MySQL. אינדקס מסד הנתונים של MySQL מגדיר את מבנה הטבלה ומכיל את מנגנון הבקרה לבדיקת תקינות הטבלאות.
פורמט קובץ MYI
לקובץ MYI שני חלקים, הכותרת וערכי המפתח.
כותרת MYI
הכותרת מכילה מידע על אפשרויות, גדלי קבצים ומפתחות. המפתחות ב-MySQL נוצרים עם פקודה כמו
CREATE [UNIQUE] INDEX.
הקבצים שקוראים וכותבים קבצי MYI נמצאים בספריית ./myisam. יש לו את הקבצים הבאים:
- mi_open.c: קובץ זה מכיל את השגרות שכותבות כל סעיף של הכותרת.
- mi_create.c: לקובץ הזה יש את השגרות הקוראות ל-mi_open.c routines.
- myisamdef.h: לקובץ הזה יש את הגדרות המבנה.
לכותרת יש את הסעיפים הבאים:
- state: המצב נכתב על ידי 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-בתים) עבור טבלאות בשורה קבועה המכילה מספר שורה סידורי. אם המפתח הוא null אז ה-byte הוא 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).