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

MySQL 設定檔 my.cnf / my.ini 核心參數詳解:Client/Server 區塊、InnoDB/MyISAM 專屬調校

     編輯:MySQL 資料庫相關知識

MySQL 啟動時讀取 my.cnf (Linux) 或 my.ini (Windows),分為 [client] 與 [mysqld] 兩大區塊。本文詳細解析生產環境常用調校參數、預設值、調整原則與監控指令。

結構總覽

[client]           # 客戶端工具 (mysql, mysqldump 等) 參數
port = 3306
default-character-set = utf8

[mysql]             # mysql 命令列專用
default-character-set = utf8

[mysqld]            # 伺服器核心參數
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
character-set-server = utf8mb4
default-storage-engine = InnoDB
sql_mode = STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION
max_connections = 1000
...

核心參數分類詳解

連線與快取

參數預設建議調整說明
max_connections151500-2000最大並發連線,預留 1 給 SUPER 用戶。Too many connections 錯誤時調大。
query_cache_size0 (5.7+ 預設關閉)0 或 64M-256M唯讀多、寫少場景啟用;寫入頻繁會成瓶頸。8.0 已移除。
table_open_cache20004000-8000表快取數,配合 max_connections,監控 Open_tables 指標。
thread_cache_size自動100-200執行緒快取,減少創建銷毀開銷,監控 Threads_created。

MyISAM 專屬 (漸少用,仍有舊系統)

參數建議值說明
key_buffer_size實體記憶體 20-25%索引塊快取,關鍵指標 Key_reads/Key_read_requests。
read_buffer_size128K-256K全表掃描緩衝,每線程分配,不可過大。
read_rnd_buffer_size256K排序後隨機讀取緩衝。
sort_buffer_size256K-512K排序緩衝,每線程,500 線程約 125-250MB。
myisam_sort_buffer_size64M-128M建立索引/REPAIR TABLE 排序緩衝。

InnoDB 核心 (主流引擎)

參數建議值說明
innodb_buffer_pool_size實體記憶體 70-80%最關鍵參數,緩存資料+索引,監控 Innodb_buffer_pool_reads/read_requests。
innodb_log_file_sizeBuffer Pool 25-50%單一記錄檔大小,較大減少 checkpoint 壓力,啟動恢復較慢。
innodb_log_buffer_size8M-64M記錄檔寫入緩衝,大交易可調大。
innodb_flush_log_at_trx_commit11=完整 ACID (每提交刷盤);2=每提交寫 OS 快取,每秒刷盤;0=每秒寫並刷盤。生產建議 1。
innodb_file_per_tableON獨立表空間,支援 DROP TABLE 釋放空間、可攜式表空間匯入。
innodb_thread_concurrency0 (自動)0 表示不限制,高併發可試 2x CPU 核心數。
innodb_flush_methodO_DIRECT避免雙重快取 (OS + InnoDB),需檔案系統支援。

其他常用

  • tmp_table_size / max_heap_table_size:記憶體臨時表上限,超過轉磁碟表,建議 64M-256M。
  • slow_query_log = ON, long_query_time = 1:慢查詢日誌,調優依據。
  • log_bin = ON, binlog_format = ROW:複寫必備,ROW 格式最安全。
  • expire_logs_days = 7:自動清理舊 Binlog。

參數生效與監控指令

# 查看目前運行值
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';
SHOW GLOBAL VARIABLES LIKE 'max_connections';

# 查看狀態計數器 (配合參數效果驗證)
SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_read%';
SHOW GLOBAL STATUS LIKE 'Threads_created';

調優原則

  1. 一次只調一個參數,觀察 24-48 小時。
  2. 以監控指標 (命中率、等待時間、佇列長度) 為準,不盲目套用網路模板值。
  3. 重大變更 (如 innodb_log_file_size) 需停機操作,提前規劃維護窗口。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved