表級維護操作是 DBA 日常核心工作。本文系統梳理 ANALYZE、CHECK、OPTIMIZE 三大維護命令、MyISAM/InnoDB 導入加速技巧、鎖模式與視圖影響實測。
ANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE tbl_name [, tbl_name] ...;
Cardinality,優化器生成精準執行計劃
CHECK TABLE tbl_name [, tbl_name] ... [option];
option: FOR UPGRADE | QUICK | FAST | MEDIUM | EXTENDED | CHANGED
QUICK 僅檢查索引樹、EXTENDED 逐行校驗數據校驗和
OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE tbl_name [, tbl_name] ...;

| 引擎/索引類型 | 關鍵參數 | 操作流程 | 原理 |
|---|---|---|---|
| MyISAM 非唯一索引 | DISABLE/ENABLE KEYS | ALTER TABLE t DISABLE KEYS; → 導入 → ALTER TABLE t ENABLE KEYS; | 批量構建索引替代逐行維護,速度提升 10x+ |
| MyISAM 唯一索引 | unique_checks | SET unique_checks=0; → 導入 → SET unique_checks=1; → ANALYZE TABLE | 關閉唯一性檢查,導入後統一驗證 |
| InnoDB | autocommit | SET autocommit=0; → 導入 → COMMIT; → SET autocommit=1; | 關閉自動提交,單事務批量提交,減少 Redo Log fsync |
MyISAM 非唯一索引:

MyISAM 唯一索引:

LOCK TABLES t READ;
-- 當前會話 INSERT/UPDATE/DELETE → 錯誤
-- 其他會話 INSERT/UPDATE/DELETE → 阻塞
UNLOCK TABLES;


基表加鎖會傳遞到視圖:鎖定基表 t,查詢視圖 v 同樣受阻。

ANALYZE/OPTIMIZELOCK TABLES,依賴引擎行級鎖 (InnoDB) 或自動表鎖 (MyISAM)Table_locks_waited、Table_locks_immediate、碎片率、統計信息新鮮度「分析→檢查→優化」三部曲 + 「導入三板斧」+「鎖機制理解」,構建表級維護完整知識體系。