MySQL效能調優的核心在於依據硬體資源(特別是記憶體)合理配置參數。以下針對生產環境常見參數說明預設值、調整原則及實務建議:
預設值:50 建議值:500
控制MySQL暫停回應前,能在堆疊中排隊的連線請求數。當SHOW PROCESSLIST出現大量unauthenticated user待連線進程時,需調大此值。受限於作業系統TCP/IP監聽佇列上限,設定過高無效。
預設值:28800秒(8小時) 建議值:7200秒(2小時)
interactive_timeout針對使用CLIENT_INTERACTIVE選項的互動式連線;wait_timeout適用於非互動式連線。縮短超時可釋放閒置連線佔用的資源,防止「Too many connections」錯誤。
預設值:8MB 建議值:實體記憶體的25%-30%(如2GB記憶體設400MB)
所有執行緒共用的索引區塊緩衝區。過大導致系統換頁(swapping)反而降低效能,需留足作業系統與其他程序記憶體。
預設值:100 建議值:1024
增加此值會提高檔案描述符需求,需同步調整作業系統ulimit -n限制。
預設值:128KB 建議值:16MB
每個執行循序掃描的執行緒分配。大量全表掃描查詢時調大可提升效能。
預設值:2MB 建議值:16MB
每個需排序的執行緒分配。加速ORDER BY、GROUP BY操作。屬於執行緒級別記憶體,設定過大易導致記憶體耗盡。
預設值:64 建議值:512
所有執行緒共用的開啟表快取。每個唯一開啟表需2個檔案描述符,需配合作業系統限制調整。
建議值:80
可重用的執行緒數量。透過比較Connections與Threads_created狀態變數評估效果。頻繁建立短連線的應用調大此值顯著降低CPU開銷。
啟動MySQL時指定--default-character-set=gb2312,實現不分大小寫的中文搜尋。
/etc/my.cnfmy.ini(4.1版本以降)修改後必須重啟MySQL服務生效。參數調優屬謹慎操作,建議依硬體規格漸進式調整,並持續監控效能指標。