OS系统:windows10
1.max_user_connections
理解;同个账号下你能用多少个cmd窗口登录mysql的最大数量。
- 这里要注意navicat等客户端工具,虽然只需要登录一次,但不代表只是打开了一个cmd窗口,具体数量视你的操作而定。(之所以不用线程来解释,是因为本渣目前对线程这个概念理解不够清晰。)
- localhost:root这个用户的实际最大值=max_user_connections+1
- 可以用show processlist这个命令来观察
2.max_connections
理解;任意账号,你能用多少个cmd窗口登录mysql的最大数量。
- 同个道理,localhost:root这个用户是一定会保留一个登录特权的,所以实际上同时打开的线程数最多是max_connections+1
3.innodb_thread_concurrency
理解:提到上面两个参数就不得不再补充说明一下innodb_thread_concurrency这个参数。max_user_connections和max_connections的定义是并发连接,而innodb_thread_concurrency的定义是并发查询,这是两个不同的概念。一个连接的状态是有多种的,比如sleep和query,innodb_thread_concurrency限制的是当前正处于query状态的线程,也就是一个并发查询的控制。一个数据库有没有出问题,与这个参数息息相关,当有超过上限个线程同时查询时,会导致后面新发起的查询都被堵住。