彙總 MySQL 優化全景知識圖譜,覆蓋設計、使用、參數、硬體四大維度:
MEDIUMINT < INT < BIGINT。NOT NULL DEFAULT '' 避免 NULL 開銷(索引列尤甚)。CHAR 適合高頻更新,變長 VARCHAR 適合長度差大。WHERE/JOIN/ORDER BY 列優先,聯合索引最左前綴原則。DISABLE/ENABLE KEYS,InnoDB SET AUTOCOMMIT=0 批量提交。TRUNCATE 清空表(DDL,不可回滾、重置自增、極快)代替 DELETE。INSERT INTO t VALUES (),(),() 批量寫入。OPTIMIZE TABLE 整理碎片(MyISAM/InnoDB 均支持)。INT UNSIGNED (Unix Timestamp) 比 DATETIME 快且跨時區安全。EXPLAIN 分析複雜 SQL。LIMIT 配合 ORDER BY/DISTINCT 避免全表掃描。| 參數 | 引擎 | 建議值/原則 |
|---|---|---|
key_buffer_size | MyISAM | 物理內存 25-30%,專用於索引塊緩存 |
table_open_cache | 通用 | max_connections * N (N=最大聯表數),預留臨時表描述符 |
innodb_buffer_pool_size | InnoDB | 專用服務器 70-80% 物理內存,核心緩存池 |
innodb_flush_log_at_trx_commit | InnoDB | 1 最安全,2 高性能妥協,0 風險最大 |
innodb_log_file_size | InnoDB | 總大小 1-4GB,減少检查点刷盘 |
innodb_support_xa | InnoDB | 無分布式事務設 OFF 減少 fsync |