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

MySQL 連線、查詢快取、暫存表、會話記憶體核心參數完整調校指南

     編輯:MySQL 資料庫相關知識

MySQL 效能調校核心在於四大面向:連線處理、查詢快取、暫存表管理、會話記憶體分配。本文系統化整理關鍵參數與調整策略。

一、連線層參數

參數說明調整建議
max_connections最大並發連線數Web 伺服器 max clients 略大,觀察 Max_used_connections
max_allowed_packet單次封包最大值大欄位/遠端備份需調大(如 64M)
thread_cache_size執行緒快取數觀察 Threads_created 快速增長時調大(如 50-100)
aborted_connects連線錯誤計數器持續增長表示客戶端連線異常,需排查

二、查詢快取

注意:MySQL 8.0 已移除 Query Cache,本節適用 5.7 及之前版本。

參數說明調整公式/建議
query_cache_type快取模式ON / DEMAND(需 SQL_CACHE)
query_cache_size快取總大小64M-256M,過大鎖競爭反而降效能
query_cache_limit單一查詢結果上限1M-4M,超過不快取
query_cache_min_res_unit快取區塊最小單位依 (query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache 計算平均大小調整

命中率監控:Qcache_hits / (Qcache_hits + Com_select)。

三、暫存表

  • tmp_table_size、max_heap_table_size:記憶體暫存表上限,**取兩者較小值**;超過自動轉 MyISAM 磁碟表。
  • 含 BLOB/TEXT 欄位的查詢**直接寫磁碟**,無法用記憶體暫存表。
  • 優先優化查詢(縮小結果集、避免 SELECT *),而非單純調大參數。

四、會話記憶體(每連線獨佔,按需分配)

參數用途基礎建議值會話層可調大
read_buffer_size循序掃描緩衝128K-256K是
read_rnd_buffer_size排序/ORDER BY 隨機讀取256K-1M是
sort_buffer_size排序緩衝1M-2M是(特定查詢可設更大)
join_buffer_size無索引 JOIN 緩衝1M-2M是

實測會話記憶體實際用量

  1. 啟動 MySQL,建立所有預期連線。
  2. top -p $(pidof mysqld) 觀察 VIRT 穩定值。
  3. 減去全域共享記憶體(key_buffer_size + innodb_buffer_pool_size + ...)。
  4. 餘值除以連線數 = 平均每會話實際用量。

調校原則

  1. 全域共享記憶體優先保障(InnoDB Buffer Pool 佔物理記憶體 60-80%)。
  2. 會話參數設定保守基礎值,極少數重查詢在 Session 層 SET SESSION sort_buffer_size=16M。
  3. 避免盲目調大導致 OOM Killer 終結 mysqld 進程。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved