
MySQL磁盤結(jié)構(gòu)
物理存儲(chǔ)
- 一個(gè)表空間的物理存儲(chǔ)有很多個(gè)組組成,每個(gè)組有256M大小,每個(gè)組由256個(gè)區(qū)構(gòu)成,每個(gè)區(qū)大小為1M,每個(gè)區(qū)有64個(gè)頁,每頁有16K
- 組與組之間以不斷增長的數(shù)組的形式構(gòu)成,這樣可以保證段空間是可以不斷擴(kuò)展(autoextend)的
- 物理存儲(chǔ)的基本單位是區(qū)和頁
- 表空間的首組的第一個(gè)頁(FSP)記錄著全表信息和全組的區(qū)描述符,第二個(gè)頁記錄InsertBuffer信息,第三個(gè)頁記錄著Inode信息; 表空間的其余各組的第一個(gè)頁(XDES)記錄全組的區(qū)描述符,第二個(gè)頁記錄InsertBuffer信息
- 每個(gè)區(qū)都由一個(gè)區(qū)描述符進(jìn)行描述,存放在FSP或XDES類型的頁面中,一個(gè)FSP或XDES類型的頁面可以包含256個(gè)區(qū)描述符
- 每個(gè)段也都由一個(gè)段描述符進(jìn)行描述,存放在INODE類型的頁面中,一個(gè)INODE類型的頁面可以包含最多85個(gè)段描述符,多個(gè)INODE類型的頁面可以鏈接在一起,從而存儲(chǔ)無限個(gè)段描述符
邏輯存儲(chǔ)
- 每一個(gè)表由表空間屬性和完全空閑碎片區(qū)鏈表、部分空閑碎片區(qū)鏈表、非空閑碎片區(qū)鏈表和多個(gè)段組成
- 多個(gè)段的段描述符以分組鏈表的形式存儲(chǔ),每個(gè)段由32個(gè)零散頁和完全空閑區(qū)鏈表、部分空閑區(qū)鏈表、非空閑區(qū)鏈表組成
- 一個(gè)索引由兩個(gè)段組成,所有的非葉子節(jié)點(diǎn)組成一個(gè)段,葉子節(jié)點(diǎn)組成另一個(gè)段
邏輯-物理映射
- 表:表的元屬性保存在第一個(gè)組的第一個(gè)頁中,通過直接讀取獲得
- 表中的碎片區(qū):所有表中的碎片區(qū)以鏈表的形式鏈接起來
- 表中的索引:一個(gè)表由多個(gè)索引組成,每個(gè)索引兩個(gè)段,這些段被放在多個(gè)INODE頁面中,多個(gè)INODE頁面被鏈接起來