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