mysql最大连接数

332 阅读3分钟
    过去的几周一直在寻找新同事,每次面试前会根据对方简历准备一些问题。在准备过程中发现自己好多知识点记忆有些模糊,在回顾过程中发现了一下很有意思的新知识。本次分享的是数据库最大连接数的最优设置,但是为了避免专业名词太多晦涩难懂的情况,下文以类比举例方式说明。
    首先是场景,现在有一家名叫cpu的奶茶店,有一个很大的窗口接单,并有两位名为核心小姐姐负责接单,小小姐姐后边一个代号磁盘的帅哥负责制作奶茶,本次讨论的就是排几队奶茶卖的最快。
    过程就是大家排好队下单,核心小姐姐接单后交给磁盘帅哥制作,做好了奶茶递给客户。这里有一个公理就是:在人数相等的前提下,小姐姐负责一队按顺序接单一定比负责多队在多个队伍来回穿梭下单要快,因为从队伍a到队伍b需要时间。所以,目前来说排2队最快。事实上奶茶下单后是需要制作时间的,这个时间核心小姐姐除了与你面面相觑做不了其他事,而且在磁盘帅哥做好一杯奶茶传递出来交给客户,直到接到下个订单这中间是无事可做的,也就是只能发呆的,这样效率是比较低的。所以我们可以设置大于核心小姐姐人数的队伍,来保证磁盘帅哥是不停接到订单的,同事核心小姐姐不会跟你面面相觑而是不停处理订单的情况。由于队伍越多要跑的路就越远,所以队伍并不是越多越好,而是一个由以上两原则公共约束的临界值。
    该临界值需要大量的测试,所以有人做了实验,并给出了一个适用于绝大多数情况的模型:连接数 = ((核心数 * 2) + 有效磁盘数)。当前的按理来说 最大队伍数= 核心小姐数*2+磁盘帅哥数,所以是5队最优。
    事实上该过程还受如网络等因素的影响,目前技术来说网络的延迟几乎可以忽略不计所以是可以忽略的。

整理

  1. Cpu每个核每次只能处理一个任务,通过操作系统在不同任务间切换来实现同时运行的假象。
  2. Cpu某个按顺序执行任务a、b一定比在a、b间切换执行快
  3. I/O过程需要时间,此过程核心切换执行其他任务总效率高
  4. 连接数 = ((核心数 * 2) + 有效磁盘数)
  5. 实际场景受多种因素影响,如网络、系统性能等,所以实际最佳性能值略小于公式值
  6. 此理论适用于绝大多数I/O场景