MySQL 透過 my.cnf 參數調優,啟動時自動套用。官方提供四種預設範本:
| 範本檔案 | 適用場景 |
|---|---|
my-small.cnf | 記憶體少、偶爾使用 |
my-medium.cnf | 中型應用 |
my-large.cnf | 大型應用、1-2GB 記憶體 |
my-huge.cnf | 超大型、2GB+ 記憶體、電商級 |
/etc/my.cnf — 影響該主機所有 MySQL 實例[MYSQL-INSTALL-DIR]/var/my.cnf — 僅影響特定實例~/.my.cnf — 僅影響該使用者啟動的實例優先順序:使用者級 > 實例級 > 全域
/usr/local/mysql/libexec/mysqld --help
# 找到 "Possible variables for option --set-variable (-O) are" 後的列表
[mysqld]
set-variable = max_connections=100
# 或新版語法:
max_connections = 100
max_connections:最大同時連接數(預設 151)thread_cache_size:執行緒快取,減少建立/銷毀開銷thread_concurrency:建議 2 x CPU 核心數key_buffer_size:MyISAM 索引快取(關鍵,建議 實體記憶體 25-30%)innodb_buffer_pool_size:InnoDB 資料+索引快取(關鍵,建議 實體記憶體 70-80%)query_cache_size:查詢結果快取(高讀少寫場景有效)query_cache_type:0=關閉, 1=開啟, 2=按需sort_buffer_size:排序緩衝(每連接)read_buffer_size:循序掃描緩衝read_rnd_buffer_size:隨機讀取緩衝innodb_log_file_size:交易日誌大小(大 = 恢復慢,寫入快)innodb_flush_log_at_trx_commit:1=最安全, 2=平衡, 0=最快sync_binlog:二進位日誌同步頻率table_open_cache:表快取數量max_heap_table_size / tmp_table_size:記憶體臨時表上限Threads_connected、Key_reads/Key_read_requests、Innodb_buffer_pool_reads、Qcache_hitsSET GLOBAL 熱調整)