天天看點

mysql優化之thread_cache_size

1、mysql伺服器的線程數檢視方法:

show  global status like 'Thread%';

mysql優化之thread_cache_size

 Threads_created:建立過的線程數,如果發現Threads_created值過大的話,表明MySQL伺服器一直在建立線程,這也是比較耗資源,可以适當增加配置檔案中thread_cache_size值

2、優化參數thread_cache_size

thread_cache_size:當用戶端斷開之後,伺服器處理此客戶的線程将會緩存起來以響應下一個客戶而不是銷毀(前提是緩存數未達上限)

即可以重新利用儲存在緩存中線程的數量,當斷開連接配接時如果緩存中還有空間,那麼用戶端的線程将被放到緩存中,如果線程重新被請求,那麼請求将從緩存中讀取,如果緩存中是空的或者是新的請求,那麼這個線程将被重新建立,如果有很多新的線程,增加這個值可以改善系統性能。

thread_cache_size大小的設定:

如果是短連接配接,适當設定大一點,因為短連接配接往往需要不停建立,不停銷毀,如果大一點,連接配接線程都處于取用狀态,不需要重新建立和銷毀,是以對性能肯定是比較大的提升。

對于長連接配接,不能保證連接配接的穩定性,是以設定這參數還是有一定必要,可能連接配接池的問題,會導緻連接配接資料庫的不穩定性,也會出現頻繁的建立和銷毀,但這個情況比較少,如果是長連接配接,可以設定成小一點,一般在50-100左右。

查詢thread_cache_size設定

show global status like'thread_cache_size';

優化方法:

1、mysql> set global thread_cache_size=16

每建立一個連接配接,都需要一個線程來與之比對。

thread_cache_size:用來緩存空閑的線程,以至不被銷毀,如果線程緩存中有空閑線程,這時候如果建立新連接配接,MYSQL就會很快的響應連接配接請求。

show global 裡關于線程緩存有如下幾個狀态變量,這裡作簡單解釋一下。

Threads_cached :代表目前此時此刻線程緩存中有多少空閑線程。

Threads_connected :代表目前已建立連接配接的數量,因為一個連接配接就需要一個線程,是以也可以看成目前被使用的線程數。

Threads_created :代表從最近一次服務啟動,已建立線程的數量。

Threads_running :代表目前激活的(非睡眠狀态)線程數。并不是代表正在使用的線程數,有時候連接配接已建立,但是連接配接處于sleep狀态,這裡相對應的線程也是sleep狀态。

最好将thread_cache_size設定成與threads_connected一樣。不過很少有情況将threads_cache_size設定成比200還大的數。

線程緩存未命中率=Threads_created /Connections

mysql優化之thread_cache_size

  可以跟線程緩存未命中數,設定thread_cache_size的大小 。   thread_cache_size/ Threads_connected  

1、Connection_errors_max_connections 當MySQL的最大并發數大于系統變量(show variables)中max_connections的最大并發數,是以而被拒絕的次數,将會記錄在這個變量裡。如果Connection_error_max_connections值比較大,則說明目前系統并發比較高,要考慮調大max_connections的值。

2、Connections表示MySQL從啟動至今,成功建立連接配接的連接配接數,這個值是不斷累加的

3、Max_used_connections表示MySQL從啟動至今,同一時刻并發的連接配接數,取得是最大值。如果這個值大于 max_connections則表明系統經常處于高并發的狀态,應該考慮調大最大并發連接配接數。

比較理想的設定是:

Max_used_connections / max_connections * 100% ≈ 85%

最大連接配接數占上限連接配接數的85%左右,如果發現比例在10%以下,MySQL伺服器連接配接上線就設定得過高了

每建立一個連接配接,都需要一個線程來與之比對。

thread_cache_size:用來緩存空閑的線程,以至不被銷毀,如果線程緩存中有空閑線程,這時候如果建立新連接配接,MYSQL就會很快的響應連接配接請求。

show global 裡關于線程緩存有如下幾個狀态變量,這裡作簡單解釋一下。

Threads_cached :代表目前此時此刻線程緩存中有多少空閑線程。

Threads_connected :代表目前已建立連接配接的數量,因為一個連接配接就需要一個線程,是以也可以看成目前被使用的線程數。

Threads_created :代表從最近一次服務啟動,已建立線程的數量。

Threads_running :代表目前激活的(非睡眠狀态)線程數。并不是代表正在使用的線程數,有時候連接配接已建立,但是連接配接處于sleep狀态,這裡相對應的線程也是sleep狀态。

最好将thread_cache_size設定成與threads_connected一樣。不過很少有情況将threads_cache_size設定成比200還大的數。

線程緩存未命中率=Threads_created /Connections

mysql優化之thread_cache_size

  可以跟線程緩存未命中數,設定thread_cache_size的大小 。   thread_cache_size/ Threads_connected  

1、Connection_errors_max_connections 當MySQL的最大并發數大于系統變量(show variables)中max_connections的最大并發數,是以而被拒絕的次數,将會記錄在這個變量裡。如果Connection_error_max_connections值比較大,則說明目前系統并發比較高,要考慮調大max_connections的值。

2、Connections表示MySQL從啟動至今,成功建立連接配接的連接配接數,這個值是不斷累加的

繼續閱讀