定義與觸發條件
靜態格式是 MyISAM 表的預設儲存格式。當表 不包含任何變長欄位(VARCHAR、BLOB、TEXT)時自動使用。每行佔用固定位元組數。
核心優勢
- 極快:根據行號直接計算位移(行號 × 行長度),單次磁碟讀取即可定位任意行,掃表效率極高。
- 易快取:固定行長便於作業系統與資料庫預讀。
- 崩潰恢復安全:
myisamchk 易於判斷行邊界,除「寫入一半」的行外皆可恢復;索引可隨時重建。
- 無需重組:除非大量刪除需釋放磁碟空間,否則無需
OPTIMIZE TABLE。
特徵與代價
| 特徵 | 說明 |
| CHAR 欄位空間填補 | 不足定長部份以空格補齊 |
| 磁碟空間較大 | 通常比動態格式表佔用更多空間 |
| 不支援變長型別 | 一旦加入 VARCHAR/TEXT 自動轉為動態格式 |
適用場景
- 欄位長度固定、讀多寫少、對讀取速度極度敏感的查詢表(如郵遞區號、字典、配置表)。
- 嵌入式資料庫、唯讀資料倉庫切片。
轉換與維護
-- 查看表格式
SHOW TABLE STATUS LIKE 'tbl_name'\G
-- 強制轉為靜態格式(需無變長欄位)
ALTER TABLE tbl_name ROW_FORMAT=FIXED;
-- 碎片整理(釋放空間)
OPTIMIZE TABLE tbl_name; -- 或 myisamchk -r
copyright ©
萬盛學電腦網 all rights reserved