首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 效能調校核心:my.cnf 關鍵參數配置指南與適用場景選擇

     編輯:MySQL 資料庫相關知識

配置檔案層級與優先序

  1. 全域:/etc/my.cnf (影響所有實例)
  2. 實例:$MYSQL_BASE/var/my.cnf (單實例覆蓋)
  3. 用戶:~/.my.cnf (客戶端預設參數)

啟動時讀取順序:全域 → 實例 → 用戶,後者覆蓋前者。

官方預設範本選擇指南

範本適用場景記憶體建議核心參數特徵
my-small.cnf嵌入式/開發測試、<64MB RAM< 64MB最小緩衝區、關閉查詢快取
my-medium.cnf中小型網站、128-512MB RAM128-512MB適度 key_buffer、table_cache
my-large.cnf大型應用、512MB-2GB RAM1-2GB大 key_buffer、sort_buffer、thread_cache
my-huge.cnf核心業務、>2GB RAM、專用 DB Server>2GB最大化緩衝區、InnoDB 專用參數

核心參數調校清單

通用緩衝區

  • key_buffer_size:MyISAM 索引塊快取 (建議 25%-50% RAM,但留給 OS/InnoDB)。
  • table_open_cache (舊 table_cache):開啟表快取數,避免頻繁開關表 (建議 max_connections * N)。
  • thread_cache_size:執行緒快取,減少建立/銷毀開銷 (建議 50-100)。

連線與查詢

  • max_connections:最大連線數 (預設 151),配合 thread_cache。
  • max_allowed_packet:單次封包上限 (建議 16M-64M),防大欄位截斷。
  • sort_buffer_size、read_buffer_size、join_buffer_size:每連線分配,不可過大 (總和 × max_connections 可能爆 RAM),建議 1-4MB。

InnoDB 專用 (生產環境必調)

  • innodb_buffer_pool_size:最關鍵參數,建議 70-80% 實體記憶體 (專用 DB)。
  • innodb_log_file_size:Redo Log 大小 (建議 256M-1G),大則恢復久、小則頻繁 checkpoint。
  • innodb_flush_log_at_trx_commit:1=最安全(預設)、2=高效能(秒級丟失)、0=最高效(崩潰丟失)。
  • innodb_file_per_table:ON (獨立表空間,利於空間回收與遷移)。

查詢快取 (MySQL 5.7 已棄用,8.0 移除)

  • query_cache_type=0、query_cache_size=0 關閉,避免鎖競爭。

驗證與生效

# 檢查語法
mysqld --help --verbose 2>&1 | head -20
# 或
mysqld --validate-config

# 線上動態調整 (部分參數)
SET GLOBAL sort_buffer_size = 4194304;
# 永久生效需寫入 my.cnf 並重啟
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved