首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 核心參數調優五大類:連線、查詢緩存、臨時表、會話記憶體、慢查詢日誌

     編輯:MySQL 資料庫相關知識

一、連線相關

參數說明建議
max_connections最大連線數,每連線佔會話記憶體依應用峰值 + 余量
max_allowed_packet單次封包上限,大批次導入/導出需調大16M-1G
aborted_connects計數器,增長代表連線錯誤監控告警
thread_cache_size線程緩存池,減少創建銷毀開銷25-100 (觀察 Threads_created)

二、查詢緩存

緩存「查詢文本 → 結果集」,表變更即失效。

參數說明
query_cache_size總大小,0 關閉
query_cache_limit單查詢結果超過此值不緩存 (防大報表佔滿)
query_cache_min_res_unit分配塊大小,依平均結果集調整減少碎片

關鍵指標:


Qcache_hit_ratio = Qcache_hits / (Qcache_hits + Com_select)
Avg_query_size   = (query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache

用 SHOW STATUS LIKE 'qcache%'; 取值。

三、臨時表

參數說明
tmp_table_size記憶體臨時表上限
max_heap_table_sizeHEAP 表上限

實際臨界值 = MIN(tmp_table_size, max_heap_table_size)。超過即轉磁碟 MyISAM 表。含 BLOB/TEXT 的查詢直接落磁碟,無法靠調參數解決,需改寫 SQL。

四、會話記憶體 (Session Memory)

每連線獨享,按需分配。關鍵參數:

參數用途建議基礎值
read_buffer_size全表掃描順序讀128K-256K
sort_buffer_size排序緩存1-2 MB
join_buffer_size無索引 JOIN1-2 MB
read_rnd_buffer_size隨機讀/排序後讀1 MB

Session 級可動態調大:SET SESSION sort_buffer_size=16M;。

實測記憶體佔用:啟動所有連線後看 top -p mysqld_pid VIRT 欄位,扣除靜態區即得會話總量。

五、慢查詢日誌

參數說明
slow_query_log / log_slow_queries開關,預設關閉
long_query_time閾值 (秒),5.1.21+ 支援微秒
log_queries_not_using_indexes記錄無索引查詢 (全表掃描)

建議:先設 1 秒,消除所有慢查詢後改 0.1 秒甚至微秒級,提前發現隱患。

總結

這五大類參數平時少動,效能調優、故障診斷時是核心抓手。配合 SHOW GLOBAL STATUS、SHOW ENGINE INNODB STATUS、慢查詢日誌分析 (pt-query-digest) 形成閉環。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved