MySQL 參數眾多,但對性能影響最大的核心參數因存儲引擎而異:MyISAM 看 key_buffer_size、table_cache;InnoDB 看 innodb_* 系列。本文聚焦前兩者。
決定索引讀取速度,所有線程共享。判斷是否合理:
SHOW STATUS LIKE 'key_read%'; Key_reads / Key_read_requests 應 ≤ 0.1%(即 1:1000 以上)
實例:Key_reads=1,014,261,Key_read_requests=3,916,880,184,比率 1:4000,健康。
每打開一表佔一個緩存槽位。監控峰值:
SHOW STATUS LIKE 'Open%tables'; Open_tables ≈ table_cache 且 Opened_tables 持續增長 → 需調大
⚠️ 盲目調大會耗盡文件描述符,導致連接失敗。須同步調大 open_files_limit(建議 ≥8192)。
innodb_buffer_pool_size:對應 MyISAM 的 key_buffer,但同時緩存數據與索引。專用 DB 建議佔物理記憶體 70%-80%。SHOW VARIABLES; -- 靜態配置 SHOW STATUS; -- 動態運行狀態 mysqladmin variables mysqladmin extended-status