配置檔與生效方式
- 修改
/etc/my.cnf(或 my.ini),重啟 MySQL 生效。
- MySQL 4.0+ 部分參數可運行時動態調整(
SET GLOBAL),但重啟後失效,持久化仍需改配置檔。
核心目錄與檔案參數
| 參數 | 說明 |
basedir | 安裝根目錄 |
datadir | 資料檔案目錄 |
pid-file | 進程 ID 檔案路徑(僅 Unix/Linux) |
[mysqld] 關鍵效能參數
| 參數 | 建議/說明 |
socket | 本地通訊 socket 路徑,預設 /var/lib/mysql/mysql.sock |
port | 監聽埠,預設 3306 |
key_buffer_size | 索引塊緩衝區(MyISAM 關鍵),視記憶體大小設定,如 384M |
table_open_cache | 所有執行緒開啟表快取數,避免頻繁開關表開銷,如 512 |
sort_buffer_size | 每連接排序緩衝區(ORDER BY/GROUP BY),每連接獨佔,100 連接 × 2M = 200M |
read_buffer_size | 每連接讀查詢緩衝區,同樣獨佔 |
query_cache_size | 查詢結果快取大小,如 32M(MySQL 8.0 已移除) |
read_rnd_buffer_size | 排序後隨機讀緩衝,如 8M |
myisam_sort_buffer_size | MyISAM 變更重排序緩衝,如 64M |
thread_concurrency | 最大並發執行緒,建議邏輯 CPU 數 × 2(超執緒再 ×2),如 8 |
thread_cache_size | 可重用執行緒快取數,如 8 |
skip-locking | 關閉外部鎖定,提升穩定性 |
[mysqldump] 區段
[mysqldump]
max_allowed_packet = 16M # 客戶端/伺服器最大封包
[myisamchk] 區段
[myisamchk]
key_buffer = 256M
sort_buffer = 256M
read_buffer = 2M
write_buffer = 2M
調優提醒
- 每連接獨佔記憶體參數(sort_buffer、read_buffer、join_buffer 等)乘以
max_connections 估算總佔用,避免 OOM。
- MySQL 8.0 移除 Query Cache,改用其他機制。
- 生產環境建議以
mysqltuner、mysqlsla 等工具輔助分析再調整。