限制并發select的patch,代碼量很少,主要是為了學習mysql的源碼,yy一下。
增加兩個全局控制變量:
thread_limit_min
thread_limit_max
增加一個條件變量:
COND_thread_running_limit
增加一個新的錯誤碼:
concurrency_error
控制的政策:
1. 如果目前的thread_running小于min值,那麼不對select做任何限制
2.
如果目前的thread_running大于min值并且小于max值,那麼select查詢線程進行阻塞,等thread_running降到安全值以下,就喚醒查詢線程。
3.
如果thread_running大于等于max值,對查詢進行fast fail報錯
Fast Fail錯誤: