MySQL Thread pool 操作過程

來源:互聯網
上載者:User

Thread pool 操作過程:

thread pool 包含一定數量的 thread groups,每個groups 管理一定量的client connections,當mysql建立 connection 時,thread pool會以迴圈的方式(round-robin fashion)將其分配到其中的一個 thread groups中。

thread_pool_size 規定了thread groups 的數量,這樣也就規定了同時可以執行多少個statement 可取值為 1—64,每個thread group 的最大線程數是4096.

thread pool 將 connection 和threads 分隔開,所以connection 和thread 和沒有固定的聯絡。

演算法:

每個 thread group 有一個監聽線程,該線程監聽那些從connection 發送過濾的statement,當接受到a statement 的時候,thread group 會有兩個選擇;立即執行或者放入隊列稍後執行。

當接受到的只是一個語句,而且沒有其他語句處於隊列,或者當前沒有語句正在執行,那麼就會立即執行該語句,否則的話該語句就會放入到隊列中。

當立即執行該語句時,那監控線程就會來執行次任務,此時意味著在該thread group 中臨時沒有線程處於監聽狀態,如果該語句執行的很快,那麼該線程還會返回來繼續處於監聽狀態。否則的話,thread pool 就會在需要的時候建立一個新的線程來監聽。 thread pool 有一個後台線程來周期的監控thread group的狀態,以免因為執行SQL時thread group 被block(比如遇到disk io 產生中斷等)

thread_pool_stall_limit 參數取值範圍60ms ----  6s,該值代表了該語句將要結束並且要執行下一個語句的時間間隔(線程在超過thread_pool_size時,會等待thread_pool_stall_limit  ms後建立新線程,防止線程池瞬間擴充而還來不必要的線程開銷)。較小的值 允許新的線程快速的啟動,這樣也可以防止死結的產生。對於那些長時間執行的statement,適合較大的值,這樣防止同時執行太多的statement。

thread pool 專註於並發的短時間啟動並執行statement ???

當statement遇到disk io時,或者row lock或者table lock的時候,會造成 thread group 變的不可用,此時 thread pool 有一個回調機制來讓該group 內開啟一個新的thread 來執行其他的statement,當blocked thread 返回的時候,thread pool立馬使用。

對於隊列: high-priority queue  和 low-priority queue

一般情況下,事務裡的第一個statement會被放到 低層級的隊列中,其他的語句會被放到較進階別的。 thread_pool_high_priority_connection 可以將所有statement 都放到 進階別的隊列中。

如果語句針對的是非事務型的儲存引擎,或者儲存引擎 autocommit=1 所有的語句都會被放入到 low 層級的隊列中,

當thread group 選擇隊列中的語句開始執行的時候,先檢查高優先順序的隊列,然後是低優先順序的隊列,對於發現的語句,它會從隊列中移除並開始執行。

如果某個語句在低優先順序的隊列中時間太長,thread pool 會將其放入到高優先順序的隊列中,thread_pool_prio_kickup_timer 參數來控制這個時間。

thread pool 會選擇重用最活躍的threads 來充分利用CPU的緩衝,這個小小的調整對效能影響很大。

  • 1
  • 2
  • 下一頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.