涵蓋編譯期優化、運行期參數調校、儲存引擎選型、官方優化工具四大維度,構建 MySQL 效能優化完整知識體系。
./configure --with-extra-charsets=none # 僅保留 latin1,減少體積與啟動開銷
./configure --with-mysqld-ldflags=-all-static --disable-shared
# 無動態庫依賴,啟動更快、運行略快,但無法動態載入插件
CFLAGS="-O3 -march=native -fomit-frame-pointer" \
CXX=gcc CXXFLAGS="-O3 -march=native -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" \
./configure \
--prefix=/usr/local/mysql \
--enable-assembler \
--with-mysqld-ldflags=-all-static \
--disable-shared \
--with-extra-charsets=none
/etc/my.cnf (全域)$MYSQL_BASE/var/my.cnf (單實例)~/.my.cnf (用戶級,僅客戶端讀取)| 參數 | 建議值 | 說明 |
|---|---|---|
max_connections | 1000+ | 配合 table_open_cache、open_files_limit |
key_buffer_size | RAM 25% (MyISAM) | InnoDB 看 innodb_buffer_pool_size (RAM 60-70%) |
read_buffer_size | 2M | 全掃描每執行緒緩衝 |
table_open_cache | 4000+ | 減少開表開銷 |
long_query_time | 1 | 慢查詢門檻 (秒),配合 slow_query_log=1 |
| 引擎 | 類別 | 適用場景 | 避坑指南 |
|---|---|---|---|
| InnoDB (BDB 後繼) | 事務安全 | 核心業務、高並發、需 ACID、行鎖、MVCC、熱備份 | 預設首選,5.5+ 已為默認 |
| MEMORY (HEAP) | 非事務 | 極速查找表、暫存中間結果、查找表 | 重啟資料消失、表鎖、不支援 BLOB/TEXT |
| MyISAM | 非事務 | 唯讀/極少寫、全文索引 (5.6 前)、壓縮表 | 表鎖、Crash 不安全、無外鍵 |
| MERGE | 非事務 | 同結構 MyISAM 表聯盟、日誌分表歸檔 | 底層仍為 MyISAM,繼承其缺點 |
SHOW GLOBAL STATUS 即時掌握 QPS、連線、鎖、臨時表、InnoDB 狀態。系統化優化,而非頭痛醫頭,才能持續榨乾硬體效能。