SHOW VARIABLES:靜態配置參數 (啟動後固定)SHOW STATUS:動態運行狀態 (持續變化)所有執行緒共享,決定索引讀取速度。僅對 MyISAM 生效。
mysql> SHOW STATUS LIKE 'key_read%';
+-------------------+------------+
| Variable_name | Value |
+-------------------+------------+
| Key_read_requests | 3916880184 |
| Key_reads | 1014261 |
+-------------------+------------+
Key_reads / Key_read_requests ≈ 1:4000 (0.025%) → **優秀**mysql> SHOW STATUS LIKE 'key_blocks_u%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Key_blocks_unused | 0 |
| Key_blocks_used | 50000 |
+-------------------+-------+
Key_blocks_unused = 0 → 緩衝區**完全滿載**,需調大used / (used + unused) ≈ 80%該伺服器 key_buffer_size = 512M (536870912 bytes),雖未命中率低,但塊已滿載,建議擴至 1~2GB (視記憶體)。
緩存打開的表描述符 (frm 檔案句柄),避免重複開啟開銷。每表佔 2 個檔案描述符。
mysql> SHOW STATUS LIKE 'Open%tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 512 | -- 當前打開表數
| Opened_tables | 1200 | -- 歷史累計打開表數
+---------------+-------+
Open_tables == table_cache 且 Opened_tables **持續快速增長** → 緩存不足,需調大FLUSH TABLES 會關閉閒置表,Open_tables 下降,Opened_tables 不變open_files_limit = 65535 (my.cnf) + OS 層 ulimit -n 65535 (寫入 /etc/security/limits.conf 永久生效)table_open_cache = 1024~2048,open_files_limit = 8192+
tmp_table_size:內存臨時表大小上限max_heap_table_size:用戶建立 MEMORY 表上限,**亦限制內部臨時表**MIN(tmp_table_size, max_heap_table_size)mysql> SHOW STATUS LIKE 'Created_tmp%';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| Created_tmp_tables | 50000 | -- 總臨時表
| Created_tmp_disk_tables | 500 | -- 磁碟臨時表
+-------------------------+-------+
Created_tmp_disk_tables / Created_tmp_tablestmp_table_size、max_heap_table_size (建議同值,如 64M~256M)TEXT/BLOB、GROUP BY/DISTINCT 無索引、UNION 等易產生臨時表max_connections 評估風險1 (預設):每提交 fsync,最安全2:寫 OS Cache,每秒 fsync,效能↑ 風險秒級丟失0:僅寫 OS Cache,效能最高,崩潰可能丟 1 秒事務| 參數 | 建議值 (4GB 記憶體、InnoDB 為主) | 備註 |
|---|---|---|
key_buffer_size | 128M | 僅供 MyISAM 臨時表 |
innodb_buffer_pool_size | 2G~3G | 核心,佔 60~75% |
table_open_cache | 1024 | 配合 open_files_limit=8192 |
tmp_table_size | 64M | 同 max_heap_table_size |
sort_buffer_size | 2M | 連線級,保守 |
read_buffer_size | 2M | 連線級 |
join_buffer_size | 2M | 連線級 |
thread_cache_size | 100 | 命中率 > 95% |
max_connections | 500~1000 | 視並發 |
參數調優無標準答案,**以監控指標為導向、以業務負載為依歸、以硬體資源為邊界**,持續觀測 SHOW GLOBAL STATUS 迭代優化。