MySQL连接池随笔
如果没有连接池,那么后端项目在每次需要访问数据库时都需要经过:
- TCP三次握手连接
- MySQL安全验证
- 执行SQL
- 四次挥手
当并发量高了之后,就会频繁的出现TCP的创建和销毁,很浪费资源和影响性能。
当使用连接池(管理MySQL连接,类似于线程池)之后,具体过程就是这样的:
- 线程在想要建立连接的时候,会去向连接池代理建立连接
- 连接池首先判断是否有空余的连接,如果有就返回
- 如果没有空余的连接,就去判断链接数是否已经到了最大,如果没有就去新建一个连接
- 如果已经到了最大链接数,就会让程序去等待,如果在等待时候有连接的释放或者归还,则可以使用连接,如果没有就返回错误
- 当线程使用完连接,就会将其归还给连接池,此时判断此连接是否已经超过最大引用次数,如果达到则销毁,如果没有则归还给连接池供其他线程使用。
当线程从连接池获得连接之后,就可以直接执行SQL了,方便,快捷。
PS:MySQL的默认连接数为100(max_connection),可以根据使用的最大链接数(max_used_connection)来动态调整,理论上最大的链接数为16384(和Redis集群的hash槽一样)。

浙公网安备 33010602011771号