1. 程式人生 > 其它 >mysql併發引數調整

mysql併發引數調整

mysql併發引數調整

mysql是多執行緒的,控制併發連線的主要引數包括max_connections,back_log,thread_cache_size,table_open_cache.

  • max_connections

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

  • 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執行執行緒至少要開啟一個表快取。該引數的值應該根據設定的最大連結數max_connections以及每個連線執行關聯查詢中涉及的表的最大數量來設定: 預設2000

  • thread_cache_size

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

  • innodb_lock_wait_timeout

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