MySQL 數據庫的效能優化是資料庫管理員(DBA)與後端開發人員的必修課。本文系統整理了從基礎維護到 SQL 語句層面的實用優化策略,助你構建高效穩定的數據存儲體系。
使用 ANALYZE TABLE 可統計鍵值分布,幫助優化器生成精準執行計劃。當查詢計劃異常時,執行此命令往往能「治標更治本」。
ANALYZE TABLE table_name;
適用引擎: MyISAM、BDB、InnoDB。執行期間會加讀鎖,建議在業務低峰期操作。
CHECK TABLE 能偵測表錯誤,並更新 MyISAM 的關鍵字統計。亦可驗證視圖定義引用的表是否存在。
CHECK TABLE tbl_name [, tbl_name] ... [option];
option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}
大量刪除或更新可變長度列(VARCHAR、BLOB、TEXT)後,會產生碎片。OPTIMIZE TABLE 可回收空間、整理碎片。
OPTIMIZE TABLE table_name;
注意: 僅對 MyISAM、BDB、InnoDB 生效,執行期間鎖表,務必擇時執行。
非空表導入前關閉非唯一索引更新,導入後重建:
ALTER TABLE tbl_name DISABLE KEYS;
-- 導入數據
ALTER TABLE tbl_name ENABLE KEYS;
空表預設先導數據後建索引,無需額外操作。使用 LOAD DATA INFILE 比多條 INSERT 快約 20 倍。
SET UNIQUE_CHECKS=0,結束後恢復 1。SET AUTOCOMMIT=0,導入結束再開啟。INSERT INTO t VALUES (1,2),(3,4),(5,6); 減少客戶端往返開銷。數據庫優化非一蹴而就,需結合業務場景、存儲引擎特性、硬體資源綜合施策。定期維護(ANALYZE/CHECK/OPTIMIZE)奠定基石,SQL 針對性調優(批量導入、INSERT 重寫、索引設計)釋放極致效能。建議建立自動化維護腳本,配合慢查詢日誌分析,持續迭代優化策略。