本篇系統介紹 InnoDB 表的邏輯存儲架構、索引組織表特性、四大行記錄格式(Redundant、Compact、Dynamic、Compressed)及溢出頁機制。
InnoDB 表**必須有主鍵**,數據按主鍵順序存放(B+樹聚簇索引)。若建表未顯式指定 PK,選擇規則:
row_id 作為主鍵注意:選擇依據是**索引定義順序**,而非列定義順序。

文件格式分兩代:
innodb_file_format=Barracuda)
結構:
trx_id(6B)、roll_ptr(7B)、無 PK 時額外 row_id(6B)特點:CHAR(N) 以 UTF8 存儲時優先去尾部空格,預留更新空間減少碎片。

結構:字段長度偏移列表(逆序)+ 記錄頭(6B) + 列數據。
特點:固定長度 CHAR 不去尾空格、NULL 佔用定長空間、主鍵無則用 6B row_id、輔助索引包含主鍵列以回表。
BLOB/TEXT/VARCHAR 過長時會發生**行溢出**。Compact/Redundant 在本頁保留前 768 字節前綴,餘數存 Off-page;Dynamic/Compressed 僅存 20 字節指針,全部 Off-page(實際長度 ≤40B 仍內聯)。
| 特性 | Redundant | Compact | Dynamic/Compressed |
|---|---|---|---|
| 空間節省 | 基準 | ~20% | ~50% (Compressed) |
| CPU 開銷 | 低 | 低 | 高 (Compressed) |
| 溢出閾值 | 768B 前綴 | 768B 前綴 | 20B 指針 (全溢出) |
| CHAR 尾空格 | 保留 | 去除 | 去除 |
| NULL 存儲 | 定長佔用 | 僅標誌位 | 僅標誌位 |
下篇將深入頁結構、Page Directory、File Trailer 校驗、Named File Formats 兼容機制等。