mysql會話執行緒引數 看看MySQL併發引數調整

2021-10-19 15:33:07 字數 2283 閱讀 6806

mysql併發引數調整

從實現上來說,mysql server 是多執行緒結構,包括後台執行緒和客戶服務執行緒。多執行緒可以有效利用伺服器資源,提高資料庫的併發效能。在mysql中,控制併發連線和執行緒的主要引數包括 max_connections、back_log、thread_cache_size、table_open_cahce。

1、max_connections

採用max_connections 控制允許連線到mysql資料庫的最大數量,預設值是 151。如果狀態變數 connection_errors_max_connections 不為零,並且一直增長,則說明不斷有連線請求因資料庫連線數已達到允許最大值而失敗,這是可以考慮增大max_connections 的值。

說明:當同時連線的請求超過151個之後,就沒有可用的連線來處理客戶端的請求了。後面進來的這些連線都會處於等待狀態。等待mysql連線被釋放,如果沒有空閒的連線,就會請求超時

mysql 最大可支援的連線數,取決於很多因素,包括給定作業系統平台的執行緒庫的質量、記憶體大小、每個連線的負荷、cpu的處理速度,期望的響應時間等。在linux 平台下,效能好的伺服器,支援 500-1000 個連線不是難事,需要根據伺服器效能進行評估設定。

2、back_log

back_log 引數控制mysql監聽tcp埠時設定的積壓請求棧大小。如果mysql的連線數達到max_connections時,新來的請求將會被存在堆疊中,以等待某一連線釋放資源,該堆疊的數量即back_log,如果等待連線的數量超過back_log,將不被授予連線資源,將會報錯。5.6.6 版本之前預設值為 50 , 之後的版本預設為 50 + (max_connections / 5), 但最大不超過900。

說明:當客戶端同時發過來的請求併發量大於151,後面過來的請求處於等待的狀態。那麼等待的連線數可以達到back_log。這些新來的請求就會被儲存在堆疊當中。以等待某個連線被釋放。該堆疊的數量就通過back_log來設定。

如果需要資料庫在較短的時間內處理大量連線請求, 可以考慮適當增大back_log 的值。

3、table_open_cache

該引數用來控制所有sql語句執行執行緒可開啟表快取的數量, 而在執行sql語句時,每乙個sql執行執行緒至少要開啟 1 個表快取。該引數的值應該根據設定的最大連線數 max_connections 以及每個連線執行關聯查詢中涉及的表的最大數量來設定 :

max_connections x n ;

說明:這個不是針對於某個會話的,這個是針對於所有客戶端執行執行緒。表快取的數量,也就是每個sql語句中操作表的個數,比如一條sql語句一般至少操作一張表。操作一張表,就有1個表快取,操作多張表,就有多個表快取。mysql> show variables like 'table_open_cache%';+----------------------------+-------+| variable_name | value |+----------------------------+-------+| table_open_cache | 431 || table_open_cache_instances | 16 |+----------------------------+-------+2 rows in set (0.06 sec)

4、thread_cache_size

為了加快連線資料庫的速度,mysql 會快取一定數量的客戶服務執行緒以備重用,通過引數 thread_cache_size 可控制 mysql 快取客戶服務執行緒的數量。

一共快取了8個執行緒資訊。

5、innodb_lock_wait_timeout

該引數是用來設定innodb 事務等待行鎖的時間,預設值是50ms , 可以根據需要進行動態設定。對於需要快速反饋的業務系統來說,可以將行鎖的等待時間調小,以避免事務長時間掛起; 對於後台執行的批量處理程式來說, 可以將行鎖的等待時間調大, 以避免發生大的回滾操作。

說明:如果在比較快速響應的業務系統中,如果沒有拿到行鎖,就直接報錯即可,不需要讓事務長時間響應。

可以看到,預設超時時間為50msmysql> show variables like 'innodb_lock_wait_timeout%';+--------------------------+-------+| variable_name | value |+--------------------------+-------+| innodb_lock_wait_timeout | 50 |+--------------------------+-------+1 row in set (0.01 sec)

MySQL引數調優

l 通用類 key buffer size 含義 用於索引塊的緩衝區大小,增加它可得到更好處理的索引 對所有讀和多重寫 影響 對於myisam 表的影響不是很大,myisam 會使用系統的快取來儲存資料,所以大量使用 myisam 表的機器記憶體很快就會耗盡。但是,如果你將該值設得過大 例如,大於總...

mysql引數調優

l max connect errors max connect errors預設值為10,也即mysqld執行緒沒重新啟動過,一台物理伺服器只要連線 異常中斷累計超過10次,就再也無法連線上mysqld服務,為此建議大家設定此值至少大於等於10w 若異常中斷累計超過引數設定的值,有二種解決辦法,執...

mysql引數調優

優化之前我們需要知道什麼 業務相關的情況 mysql相關的配置 伺服器上需要關注那些 作業系統版本 是否為穩定版 cpu 網絡卡節電模式 建議資料庫應用的伺服器,關閉節電模式 伺服器numa設定 raid卡快取 磁碟排程策略 write back 回寫 宕機的話cache中資料,如果沒有刷入磁碟,可...