| 參數 | 建議值 | 說明 |
|---|---|---|
key_buffer_size | 物理內存 30%-40%(純 MyISAM) | 僅緩存索引(.MYI),數據依賴 OS 文件系統緩存。須預留內存給 OS。若索引僅 1GB 卻設 4GB 純屬浪費。 |
| 極少用 MyISAM | 16-32 MB | 僅滿足臨時表索引需求。 |
| 參數 | 建議值 | 說明 |
|---|---|---|
innodb_buffer_pool_size | 物理內存 70%-80%(純 InnoDB) | 同時緩存數據與索引,對性能極其敏感。默認值極小會導致性能極差。數據量固定不增長時無需過大。 |
innodb_additional_mem_pool_size | 20 MB 左右 | 現代 OS 內存充足時影響微小,保留即可。 |
innodb_log_file_size | 64-512 MB | 大寫入負載下提升性能,但會拉長崩潰恢復時間。視服務器規模調整。 |
innodb_log_buffer_size | 8-16 MB | 寫入峰值或長事務時適當調大;每秒刷盤一次,無需超過 1 秒產生的日志量。 |
innodb_flush_log_at_trx_commit | 2(推薦) | 默認 1:每提交刷盤,極慢。 2:提交只刷 OS 緩存,每秒刷盤,僅可能丟失 1-2 秒數據,性能提升數量級。 0:最快但崩潰丟失事務風險最大。 |
| 參數 | 建議 | 說明 |
|---|---|---|
table_open_cache (table_cache) | 表數 × 線程數 估算,如 200 表設 1024 | 打開表開銷大(MyISAM 標記 .MYI 頭),增大緩存減少頻繁打開/關閉。 |
thread_cache_size | ≥ 16,觀察 Threads_Created 增長調整 | 線程創建/銷毀開銷大,緩存復用提升高併發短連接性能。 |
query_cache_size | 32-512 MB,視命中率啟用 | 讀多寫少且無應用層緩存時有效;過大反而增加維護開銷導致變慢。監控 Qcache_hits/Qcache_lowmem_prunes 決定是否保留。 |
MyISAM 靠 OS 緩數據、靠 key_buffer 緩索引;
InnoDB 數據索引全靠 buffer_pool,flush_log=2 保平安。