從原始碼安裝時,編譯選項對效能影響可達 10-30%。
針對 Pentium 處理器優化,整體效能提升約 10%。非 Pentium 平台勿用。
./configure --with-extra-charsets=none [其他選項]
預設安裝 24 種字元集,僅保留 latin1 可減少記憶體佔用。
./configure --with-mysqld-ldflags=-all-static [其他選項]
避免共享函式庫呼叫開銷,提升執行速度。
CFLAGS="-O6 -mpentiumpro -fomit-frame-pointer" \
CXX=gcc CXXFLAGS="-O6 -mpentiumpro -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local --enable-assembler \
--with-mysqld-ldflags=-all-static --disable-shared
透過 my.cnf 設定檔調整運行參數,三種作用範圍:
/etc/my.cnf[mysql-install-dir]/var/my.cnf~/my.cnfmy-small.cnf:少量記憶體、輕度使用my-medium.cnf:中等系統my-large.cnf:大量記憶體、高負載my-huge.cnf:2GB+ 記憶體、電商級應用[mysqld]
set-variable = max_connections=100
set-variable = key_buffer_size=128M
set-variable = table_cache=256
set-variable = sort_buffer_size=4M
set-variable = query_cache_size=32M
查看所有可調參數:mysqld --help
| 類型 | 分類 | 特性 | 適用場景 |
|---|---|---|---|
| BDB | 交易安全 | 支援 COMMIT/ROLLBACK,由 Sleepycat 開發 | 需交易處理的應用 |
| HEAP | 非交易 | 記憶體哈希索引,極速,重啟資料遺失 | 暫存表、快取表 |
| ISAM | 非交易 | 舊版預設,已淘汰 | 不建議使用 |
| MERGE | 非交易 | 多個 MyISAM 表邏輯合併 | 大型日誌分表查詢 |
| MyISAM | 非交易 | 預設類型,體積小、跨平台、大鍵值支援 | 一般唯讀/多讀少寫應用 |
CREATE TABLE email_addresses (
email CHAR(55) NOT NULL,
name CHAR(30) NOT NULL,
PRIMARY KEY (email)
) TYPE=HEAP;
SHOW STATUS;
顯示連線數、查詢數、暫存表建立數等關鍵指標,定位瓶頸。
EXPLAIN SELECT * FROM orders WHERE customer_id = 'VINET';
分析查詢執行計畫,判斷索引使用情況、連接類型、掃描行數。
OPTIMIZE TABLE pet;
回收碎片空間、重排資料,適用於大量 UPDATE/DELETE 後的 MyISAM/BDB 表。