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

MySQL 執行緒狀態監控:Threads_created、thread_cache_size 設定指南

     編輯:MySQL 資料庫相關知識

核心狀態變數

mysql> SHOW GLOBAL STATUS LIKE 'Thread%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_cached    | 46    |
| Threads_connected | 2     |
| Threads_created   | 570   |
| Threads_running   | 1     |
+-------------------+-------+

變數含義

  • Threads_created:歷史累計建立執行緒數。**持續快速增長 = 頻繁建立/銷毀執行緒 = 效能損耗**。
  • Threads_cached:目前閒置在快取池的執行緒數。
  • Threads_connected:目前已連線的客戶端數。
  • Threads_running:正在執行查詢的執行緒數。

thread_cache_size 作用機制

啟用後,客戶端斷線時執行緒不銷毀而是放入快取池(上限 `thread_cache_size`),下一新連線直接複用,避免 `pthread_create`/`pthread_destroy` 系統呼叫開銷。

調優判斷

-- 若 Threads_created / Uptime (秒) > 1 甚至更高,需調大 thread_cache_size
-- 範例:570 / 86400 ≈ 0.006 (健康)
-- 若 1 小時建立 1000 個執行緒 → 0.27/秒 → 需調優

配置檢視與修改

mysql> SHOW VARIABLES LIKE 'thread_cache_size';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| thread_cache_size | 64    |
+-------------------+-------+

-- 動態調整 (立即生效)
SET GLOBAL thread_cache_size = 128;
-- 永久生效請寫入 my.cnf [mysqld] 區段

經驗值參考

最大連線數建議 thread_cache_size
< 10016~32
100~50064~128
> 500128~256

上限不宜超過 `max_connections`,且觀察 `Threads_cached` 是否長期接近上限(代表快取池足夠)。

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