資料庫優化是系統工程,涵蓋設計、索引、架構、硬體多維度。本文為系列首篇,聚焦**表設計規範化、分表策略、慢查詢發現**,為後續索引優化、參數調優奠基。
BIGINT UNSIGNED AUTO_INCREMENT。| 範式 | 核心要求 | 實戰判斷 |
|---|---|---|
| 1NF | 每列不可再分(原子性) | 地址若不拆省市區、不排序、不聚合 → 可保留單列 |
| 2NF | 非鍵列完全依賴主鍵(無部分依賴) | 複合主鍵表中,非鍵列不能只依賴主鍵一部分 |
| 3NF | 非鍵列不傳遞依賴主鍵(無傳遞依賴) | 非鍵列 A 依賴非鍵列 B,B 依賴主鍵 → 拆表 |
⚠️ **反範式化**:為查詢效能,適度冗余非鍵列(如訂單表冗余用戶姓名),需在應用層保證一致性。
TEXT/BLOB、last_login、address)移至擴展表。slow_query_log=ON
long_query_time=2
log_queries_not_using_indexes=ON
mysqldumpslow -s t /var/log/mysql/slow.log(官方,按時間排序)pt-query-digest /var/log/mysql/slow.log(Percona Toolkit,專業報表:Top SQL、執行計劃、索引建議)type(ALL/index/range/ref/eq_ref/const/system)、key(實際用到的索引)、rows(預估掃描行)、Extra(Using where/Using index/Using temporary/Using filesort)。系列(二)將深入 **索引設計原則、覆蓋索引、最左前綴、索引下推、直方圖統計** 等進階優化技巧。
優化無終點,只有在當前負載下的最優解。建立標準化設計評審、慢查詢周報、參數基線管理,才能持續收益。