mysql 限制并发select patch
限制并发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错误:
mysql> select sleep(100); ERROR 1728 (HY000): conncurrency limit error