配置文件模板只能作為起點,**穩定運行一段時間後,根據 `SHOW GLOBAL STATUS` 實際負載特徵微調,才是正確優化路徑**。
-- 配置檢查
SHOW VARIABLES LIKE '%slow%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| log_slow_queries | ON |
| slow_launch_time | 2 |
+------------------+-------+
-- 狀態檢查
SHOW GLOBAL STATUS LIKE '%slow%';
+---------------------+-------+
| Variable_name | Value |
+---------------------+-------+
| Slow_launch_threads | 0 |
| Slow_queries | 4148 |
+---------------------+-------+
pt-query-digest / mysqldumpslow / mysqlsla。SHOW VARIABLES LIKE 'max_connections';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| max_connections | 256 |
+-----------------+-------+
SHOW GLOBAL STATUS LIKE 'Max_used_connections';
+----------------------+-------+
| Variable_name | Value |
+----------------------+-------+
| Max_used_connections | 245 |
+----------------------+-------+
Max_used_connections / max_connections ≈ 85% 最理想。SHOW VARIABLES LIKE 'key_buffer_size';
+-----------------+------------+
| Variable_name | Value |
+-----------------+------------+
| key_buffer_size | 536870912 | -- 512MB
SHOW GLOBAL STATUS LIKE 'key_read%';
+------------------------+-------------+
| Variable_name | Value |
+------------------------+-------------+
| Key_read_requests | 27813678764 |
| Key_reads | 6798830 |
+------------------------+-------------+
Key_reads / Key_read_requests = 0.0244%(極優,<0.1% 即合格)。SHOW GLOBAL STATUS LIKE 'key_blocks_u%';
+------------------------+-------------+
| Variable_name | Value |
+------------------------+-------------+
| Key_blocks_unused | 0 |
| Key_blocks_used | 413543 |
+------------------------+-------------+
使用率 Key_blocks_used / (Key_blocks_used + Key_blocks_unused) ≈ 100%,建議擴容或檢查是否過度索引。
SHOW GLOBAL STATUS LIKE 'created_tmp%';
+-------------------------+---------+
| Variable_name | Value |
+-------------------------+---------+
| Created_tmp_disk_tables | 21197 |
| Created_tmp_files | 58 |
| Created_tmp_tables | 1771587 |
+-------------------------+---------+
Created_tmp_disk_tables / Created_tmp_tables = 1.2%(優秀,<25% 合格)。SHOW VARIABLES WHERE Variable_name IN ('tmp_table_size','max_heap_table_size');
+---------------------+-----------+
| Variable_name | Value |
+---------------------+-----------+
| max_heap_table_size | 268435456 | -- 256MB
| tmp_table_size | 536870912 | -- 512MB
+---------------------+-----------+
實際生效值取兩者較小者(256MB)。超過 256MB 的臨時表強制落磁盤。
GROUP BY/ORDER BY 不走索引),或增大兩參數(內存允許前提下)。SHOW GLOBAL STATUS LIKE 'open%tables%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 919 |
| Opened_tables | 1951 |
+---------------+-------+
SHOW VARIABLES LIKE 'table_cache';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| table_cache | 2048 | -- 5.1.3+ 叫 table_open_cache
+---------------+-------+
Open_tables / Opened_tables = 47%(偏低,說明表頻繁打開/關閉)。Open_tables / Opened_tables ≥ 85% 且 Open_tables / table_cache ≤ 95%。table_open_cache(如 4096),注意打開文件句柄限制 ulimit -n。| 指標 | 關鍵狀態變量 | 健康閾值 | 調優動作 |
|---|---|---|---|
| 慢查詢 | Slow_queries | 增長趨勢平緩,無突增 | 分析慢日志、加索引、改 SQL |
| 連接數 | Max_used_connections / max_connections | 85% ± 10% | 調 max_connections、優化連接池、加從庫 |
| Key Buffer | Key_reads / Key_read_requests Key_blocks_used / (used+unused) |
未命中 < 0.1% Block 用率 ~80% |
調 key_buffer_size、檢查過度索引 |
| 臨時表 | Created_tmp_disk_tables / Created_tmp_tables | < 25% | 優化 SQL、調 tmp_table_size/max_heap_table_size |
| Open Tables | Open_tables / Opened_tables Open_tables / table_open_cache |
命中 ≥ 85% 緩存佔用 ≤ 95% |
調 table_open_cache、檢查表鎖競爭 |
下一步預告:第二部分將覆蓋 InnoDB 核心指標(Buffer Pool、Redo Log、Row Lock、Deadlock、Undo Log)與複製狀態監控。