萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MyISAM 靜態(固定長度)表特性深度解析

定義與觸發條件

靜態格式是 MyISAM 表的預設儲存格式。當表 不包含任何變長欄位(VARCHAR、BLOB、TEXT)時自動使用。每行佔用固定位元組數。

核心優勢

  • 極快:根據行號直接計算位移(行號 × 行長度),單次磁碟讀取即可定位任意行,掃表效率極高。
  • 易快取:固定行長便於作業系統與資料庫預讀。
  • 崩潰恢復安全:myisamchk 易於判斷行邊界,除「寫入一半」的行外皆可恢復;索引可隨時重建。
  • 無需重組:除非大量刪除需釋放磁碟空間,否則無需 OPTIMIZE TABLE。

特徵與代價

適用場景

  • 欄位長度固定、讀多寫少、對讀取速度極度敏感的查詢表(如郵遞區號、字典、配置表)。
  • 嵌入式資料庫、唯讀資料倉庫切片。

轉換與維護

-- 查看表格式
SHOW TABLE STATUS LIKE 'tbl_name'\G

-- 強制轉為靜態格式(需無變長欄位)
ALTER TABLE tbl_name ROW_FORMAT=FIXED;

-- 碎片整理(釋放空間)
OPTIMIZE TABLE tbl_name;  -- 或 myisamchk -r
copyright © 萬盛學電腦網 all rights reserved
特徵說明
CHAR 欄位空間填補不足定長部份以空格補齊
磁碟空間較大通常比動態格式表佔用更多空間
不支援變長型別一旦加入 VARCHAR/TEXT 自動轉為動態格式