配置檔範例 (Windows 路徑)
[mysqld]
basedir=D:/MySQL
datadir=D:/MySQL/data
# bind-address=IP
# port=3306
# 連線與快取
max_connections=1500
skip-locking
# skip-networking
# 緩衝區與快取 (視記憶體調整)
key_buffer=384M
max_allowed_packet=1M
table_cache=512
sort_buffer=2M
record_buffer=2M
thread_cache=8
thread_concurrency=8 # 建議 CPU 核心數 * 2
myisam_sort_buffer_size=64M
# 複寫識別
server-id=1
[isamchk]
key_buffer=128M
sort_buffer=128M
read_buffer=2M
write_buffer=2M
[myisamchk]
key_buffer=128M
sort_buffer=128M
read_buffer=2M
write_buffer=2M
[WinMySQLadmin]
Server=D:/mysql/bin/mysqld-nt.exe
核心參數解析與調優建議
| 參數 | 說明 | 調優建議 |
key_buffer | MyISAM 索引塊快取 | 實體記憶體 25-30%(僅跑 MyISAM 時),InnoDB 環境改調 innodb_buffer_pool_size |
max_connections | 最大同時連線數 | 依應用峰值設定,過大耗盡記憶體 |
table_cache | 開啟表快取數 | 觀察 Opened_tables 狀態變數調整 |
sort_buffer / record_buffer | 每連線排序/讀取緩衝 | 預設 2MB 足夠,大查詢可適度增大 |
thread_cache | 執行緒快取 | 減少頻繁建立/銷毀執行緒開銷 |
thread_concurrency | 並行執行緒提示 | Linux/Unix 建議 CPU核心*2,Windows 通常忽略 |
myisam_sort_buffer_size | MyISAM 建索引排序緩衝 | 大量載入/建索引時可增至 128M+ |
skip-locking | 關閉外部鎖定 | 單機多實例或 NFS 共享才需開啟 |
InnoDB 專用參數(補充)
innodb_buffer_pool_size=1G # 實體記憶體 60-70%
innodb_log_file_size=256M
innodb_log_buffer_size=8M
innodb_flush_log_at_trx_commit=2 # 1 最安全,2 效能最佳
innodb_file_per_table=1
驗證與監控
- 修改後 重啟 MySQL 生效
- 觀察
SHOW GLOBAL STATUS:Key_reads/Key_read_requests(命中率)、Threads_created(執行緒快取效果)
- 使用
mysqltuner.pl、MySQLTuner 自動分析建議
注意事項
- Windows 路徑使用正斜線
/ 或雙反斜線 \\
- 參數名新版多採用底線格式(
sort_buffer_size),舊版 set-variable = sort_buffer 仍相容
- 生產環境務必先在測試機壓測驗證