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

快速提升 MySQL 連接數負載能力的實戰調優指南

     編輯:MySQL 資料庫相關知識

核心調優點

1. 調整 InnoDB 並發執行緒

預設 innodb_thread_concurrency = 0(無限制),高並發下易導致 CPU 爭搶。建議先設為 16 或 64,觀察負載再微調:

SET GLOBAL innodb_thread_concurrency = 16;

持久化請寫入 my.cnf:innodb_thread_concurrency = 16。

2. 提高最大連接數

Windows (my.ini) / Linux (my.cnf):

max_connections = 1000

修改後重啟服務生效。也可線上動態調整(無需重啟):

SET GLOBAL max_connections = 1000;

3. 限制單用戶最大連接數

防止單一應用佔盡連接導致整庫不可用:

SET GLOBAL max_user_connections = 500;

建議配合連接池使用,避免應用端頻繁建立連接。

4. 關閉元資料統計更新

監控工具頻繁讀取 information_schema 會觸發統計更新,造成 I/O 激增:

SET GLOBAL innodb_stats_on_metadata = 0;

持久化:innodb_stats_on_metadata = 0。慢查詢中出現 information_schema 表時也建議關閉。

5. Linux 來源碼編譯提高上限

若配置檔上限仍不夠,需重新編譯 MySQL。以 CentOS 4.4 + MySQL 5.0.33 為例:

vi /usr/local/mysql/bin/mysqld_safe
# 找到 mysqld 啟動行,在後面加上:
-O max_connections=1500
# 重啟驗證
service mysqld restart
mysqladmin -uroot -p variables | grep max_connections

常用檢查指令速查

# 查看當前最大連接數
SHOW VARIABLES LIKE 'max_connections';
# 查看當前連線狀態
SHOW PROCESSLIST;
# 查看狀態計數器
SHOW STATUS LIKE 'Threads_connected';
# 客戶端查看變數
mysqladmin -uroot -p variables

比喻理解

連接數如食堂打飯窗口:預設 1 個窗口(100 連接),突發 100 人排隊會亂。適當限流(max_user_connections)並增加窗口(max_connections),再配合排隊機制(連接池),才能高效服務。

總結

按「調並發 → 擴上限 → 限單用戶 → 關無用統計 → 必要時重編譯」順序逐步調優,並持續監控 Threads_connected、Aborted_connects 等指標,即可穩健支撐高並發連接。

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