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

MySQL 性能優化之路:my.cnf 核心參數深度解析與硬件配置建議

     編輯:MySQL 資料庫相關知識

硬件層面優化優先級

  1. 磁盤 I/O:瓶頸之首。建議 RAID 0+1 (非 RAID 5),高轉速 SAS/SSD,分離 Binlog/數據/日誌到不同物理卷
  2. CPU:SMP 多路對稱 (如 2× Xeon),開啟超線程
  3. 內存:專用 DB ≥ 4GB,生產常見 16GB+,InnoDB 緩衝池佔 60-70% 物理內存

假設環境:2× Xeon 2.4GHz、4GB DDR、SCSI 73GB

my.cnf 核心參數詳解

參數推薦值說明
skip-lockingON禁用外部鎖,減少死鎖風險
skip-name-resolveON禁用 DNS 反解,授權表僅用 IP
back_log384連接請求隊列,Linux 建議 <512
key_buffer_size256MMyISAM 索引緩衝,4GB 內存建議 256-384M
max_allowed_packet4M單包大小,大字段需調大
thread_stack256K線程棧大小
table_open_cache1024表緩存,舊版稱 table_cache
sort_buffer_size6-8M每連接排序緩衝,總量 = 值 × 連接數
read_buffer_size4M每連接順序讀緩衝
join_buffer_size8M每連接 JOIN 緩衝 (無索引 JOIN 時用)
myisam_sort_buffer_size64MMyISAM 建索引排序緩衝
thread_cache_size64-120線程緩存,減少創建銷毀
query_cache_size64M查詢緩存,觀察 Qcache_lowmem_prunes/Qcache_hits 調優
tmp_table_size256M內存臨時表上限,超過轉磁盤
max_connections768最大連接,配合 thread_cache/back_log
max_connect_errors10000000防誤封禁
wait_timeout10空閒連接回收,釋放資源
thread_concurrency8邏輯 CPU 數 × 2 (2 物理 × 2 HT = 4 → 8)
innodb_buffer_pool_size2G核心參數,佔物理內存 50-70%
innodb_log_file_size1GRedo Log 大小,大寫入場景調大
innodb_log_buffer_size200MLog 緩衝,減少磁盤刷寫
innodb_flush_log_at_trx_commit11=最安全,2/0=高效能有丟數風險
innodb_file_per_table1獨立表空間,便於分區/回收空間
innodb_thread_concurrency8InnoDB 內部併發線程,通常等於邏輯 CPU 數

動態觀測指標

  • Key_reads / Key_read_requests < 1% → 擴大 key_buffer_size
  • Qcache_lowmem_prunes 大 → 擴大 query_cache_size 或關閉查詢緩存
  • Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests → 調整 innodb_buffer_pool_size
參數無銀彈,需根據 SHOW GLOBAL STATUS、pt-query-digest、sysbench 壓測持續迭代。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved