1. 程式人生 > >innoDb 的多執行緒併發調優

innoDb 的多執行緒併發調優

  innodb  本來就好似對高併發設計的,但是不是能應對所有的高併發,你可以對部分就像調優

   首先說明3個引數

  innodb_thread_concurrency  :併發執行緒數量

innodb _thread_sleep_delay

innodb_concurrency_tickets

innodb用自己的執行緒排程機制來控制執行緒如何進入innodb  核心工作,並執行相關的操作。  innodb_thread_concurrency變數就控制了進入核心的執行緒數量。0表示不限制進入核心的數量。如果innodb核心中已經有很多執行緒進入,達到一定數量後就不能再進入了。innodb使用了一種兩階段的方式控制執行緒進入核心,這終機制減少了作業系統因為執行緒之間的上下文切換帶來的開銷。

2階段如下

執行緒首先睡眠innodb _thread_sleep_delay所規定的時間(微妙),然後再次嘗試進入,如果還是不能進入,就會就進入一個等待佇列並且把控制權限交給作業系統。

一旦執行緒進入了核心,他就會得到一個去定的資料作為憑證,它再次進入核心時因為憑證就會減少一些操作,innodb_concurrency_tickets變數就是控制了憑據的數量,憑據是對執行緒授權。

同時 innodb_commit_concurrency也控制了多執行緒併發提交的數量。如果 innodb_thread_concurrency  設定的有點大innodb_commit_concurrency應該做出相應的調整,否則會造成大量執行緒阻塞。

關於多執行緒併發可以參考該文

http://hi.baidu.com/tangchaoql/blog/item/db7a2959770a967b84352449.html