關鍵系統參數調優
透過網路資料查找與自身嘗試,認為以下參數對效能影響最大:
- back_log:MySQL 能處理的連線數量。主執行緒在極短時間內收到大量連線請求時生效。值指定暫停回應新請求前可堆疊的請求數。僅當預期短時間內有大量連線需增加。預設 50,建議改為 500。觀察到大量
unauthenticated user 待連線進程時需調大。
- interactive_timeout:互動連線等待動作秒數。預設 28800,建議改為 7200。
- key_buffer_size:索引區塊緩衝區大小,所有執行緒共享。增加可獲得更好索引處理(讀/多重寫),但過大導致換頁變慢。預設 8MB,2GB 記憶體主機建議改為 400MB。
- max_connections:允許同時客戶端連線數。增加會增加檔案描述符需求。預設 100,建議改為 1024,否則常見
Too many connections 錯誤。
- record_buffer(即
read_buffer_size):循序掃描執行緒為每張表分配的緩衝區。大量循序掃描時可增加。預設 128KB,建議改為 16MB。
- sort_buffer(即
sort_buffer_size):需排序執行緒分配的緩衝區。增加可加速 ORDER BY/GROUP BY。預設 2MB,建議改為 16MB。
- table_cache(即
table_open_cache):所有執行緒開啟表的數量。增加會增加檔案描述符。MySQL 每唯一開啟表需 2 個檔案描述符。預設 64,建議改為 512。
- thread_cache_size:可重用保存在緩存中的執行緒數。有新執行緒時從緩存取得,斷線時放入緩存。許多新執行緒時調大可提升效能。透過比較
Connections 與 Threads_created 狀態變數可見效果。建議設為 80。
- wait_timeout:非互動連線等待動作秒數。預設 28800,建議改為 7200。
調整方法與注意事項
參數調整透過修改 /etc/my.cnf 檔案並重啟 MySQL 實現。這是謹慎工作,上述數值僅為個人建議,請根據自身主機硬體狀況(特別是記憶體大小)進一步調整。