MySQL高级 - 并发参数调整
Mysql并發參數調整
從實現上來說,MySQL Server 是多線程結構,包括后臺線程和客戶服務線程。多線程可以有效利用服務器資源,提高數據庫的并發性能。在Mysql中,控制并發連接和線程的主要參數包括 max_connections、back_log、thread_cache_size、table_open_cahce。
- max_connections
采用max_connections 控制允許連接到MySQL數據庫的最大數量,默認值是 151。如果狀態變量 connection_errors_max_connections 不為零,并且一直增長,則說明不斷有連接請求因數據庫連接數已達到允許最大值而失敗,這是可以考慮增大max_connections 的值。
Mysql 最大可支持的連接數,取決于很多因素,包括給定操作系統平臺的線程庫的質量、內存大小、每個連接的負荷、CPU的處理速度,期望的響應時間等。在Linux 平臺下,性能好的服務器,支持 500-1000 個連接不是難事,需要根據服務器性能進行評估設定。
- back_log
back_log 參數控制MySQL監聽TCP端口時設置的積壓請求棧大小。如果MySql的連接數達到max_connections時,新來的請求將會被存在堆棧中,以等待某一連接釋放資源,該堆棧的數量即back_log,如果等待連接的數量超過back_log,將不被授予連接資源,將會報錯。5.6.6 版本之前默認值為 50 , 之后的版本默認為 50 + (max_connections / 5), 但最大不超過900。
如果需要數據庫在較短的時間內處理大量連接請求, 可以考慮適當增大back_log 的值。
- table_open_cache
該參數用來控制所有SQL語句執行線程可打開表緩存的數量, 而在執行SQL語句時,每一個SQL執行線程至少要打開 1 個表緩存。該參數的值應該根據設置的最大連接數 max_connections 以及每個連接執行關聯查詢中涉及的表的最大數量來設定 :
? max_connections x N ;
- thread_cache_size
為了加快連接數據庫的速度,MySQL 會緩存一定數量的客戶服務線程以備重用,通過參數 thread_cache_size 可控制 MySQL 緩存客戶服務線程的數量。
- innodb_lock_wait_timeout
該參數是用來設置InnoDB 事務等待行鎖的時間,默認值是50ms , 可以根據需要進行動態設置。對于需要快速反饋的業務系統來說,可以將行鎖的等待時間調小,以避免事務長時間掛起; 對于后臺運行的批量處理程序來說, 可以將行鎖的等待時間調大, 以避免發生大的回滾操作。
總結
以上是生活随笔為你收集整理的MySQL高级 - 并发参数调整的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL高级 - 内存优化 - Inn
- 下一篇: MySQL高级 - 锁 - 锁的概述及分