首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

32GB 記憶體服務器 MySQL my.cnx 核心參數調優建議

     編輯:MySQL 綜合教學

配置環境基準

  • 物理記憶體:32 GB
  • 專用資料庫服務器
  • InnoDB 為主儲存引擎
  • 高併發讀寫負載

核心參數配置與說明

參數建議值說明
innodb_file_per_table1啟用獨立表空間,便於管理、回收空間、傳輸表
back_log300監聽隊列連接數,高併發時避免連接被拒
max_connections8000最大同時連接數,配合連接池使用,防止過載
max_connect_errors30單客戶端最大錯誤次數,超過則封鎖 IP
table_open_cache4096所有線程打開表的快取數量(舊版 table_cache)
open_files_limit10240作業系統開啟檔案描述符上限,需同步調整 ulimit -n
max_allowed_packet32M單次封包最大值,支援大欄位、批次插入
wait_timeout10非互動連接閒置秒數,短連接應用建議 10-30 秒
sort_buffer_size16M每連接排序緩衝(ORDER BY/GROUP BY),按連接分配
join_buffer_size16M無索引 JOIN 優化緩衝,按連接分配,謹慎調大
query_cache_size128M查詢快取大小,**MySQL 8.0 已移除**,5.7 建議關閉或小值
transaction_isolationREPEATABLE-READ預設事務隔離級別,InnoDB 預設且支援 MVCC
thread_stack512K線程堆疊大小,預設通常足夠
log_binmysql-bin啟用二進位日誌,主從複制、時間點恢復必備

InnoDB 核心參數(重中之重)

參數建議值計算依據與說明
innodb_buffer_pool_size6G物理記憶體 60-80%,32G×75%=24G,但需預留 OS、連接緩衝、排序緩衝等,建議 20-24G。此處 6G 偏保守,視實際資料熱度調整
innodb_file_io_threads4同步 IO 線程數,SSD 可調高至 8-16
innodb_thread_concurrency16InnoDB 內部併發線程上限,0 為不限制,現代版本建議 0 或 CPU 核心數×2
innodb_log_buffer_size16M日誌緩衝,大事務建議 32-64M
innodb_log_file_size512M單日誌檔大小,總大小 = size × files_in_group,建議 1-4G 總量
innodb_log_files_in_group3日誌檔組數量,通常 2-4 個
innodb_lock_wait_timeout120鎖等待超時秒數,長事務業務可調大
innodb_flush_log_at_trx_commit1必須設 1 保證 ACID,極高寫入可考慮 2(風險自負)
innodb_flush_methodO_DIRECT避免雙重緩衝,直接 I/O,搭配 RAID/SSD 最佳

重要補充參數(建議加入)

[mysqld]
# 連接與緩衝
thread_cache_size = 100
read_buffer_size = 2M
read_rnd_buffer_size = 8M
bulk_insert_buffer_size = 32M

# InnoDB 進階
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_io_capacity = 2000          # SSD 建議 2000-5000
innodb_io_capacity_max = 5000
innodb_adaptive_hash_index = 1
innodb_adaptive_flushing = 1

# 日誌與恢復
sync_binlog = 1                    # 雙 1 配置保證不丟數據
binlog_format = ROW                # ROW 格式主從一致性最佳
expire_logs_days = 7               # 自動清理舊 binlog

# 效能Schema監控
performance_schema = ON

調優核心原則

  1. Buffer Pool 最大化:熱數據全在記憶體,是效能第一要素
  2. 避免 Swap:vm.swappiness=1,鎖定 MySQL 記憶體不被換出
  3. IO 能力匹配:SSD 調高 innodb_io_capacity,HDD 則保守
  4. 監控為先:配合 PM2、Prometheus+Grafana、sysbench 持續基準測試

配置生效方式

# 修改配置後重啟
systemctl restart mysqld

# 線上動態調整(部分需重啟)
SET GLOBAL innodb_buffer_pool_size = 21474836480;  -- 20G 線上擴容(5.7.5+)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved