MySQL连接池随笔

如果没有连接池,那么后端项目在每次需要访问数据库时都需要经过:

  1. TCP三次握手连接
  2. MySQL安全验证
  3. 执行SQL
  4. 四次挥手

当并发量高了之后,就会频繁的出现TCP的创建和销毁,很浪费资源和影响性能。

当使用连接池(管理MySQL连接,类似于线程池)之后,具体过程就是这样的:

  1. 线程在想要建立连接的时候,会去向连接池代理建立连接
  2. 连接池首先判断是否有空余的连接,如果有就返回
  3. 如果没有空余的连接,就去判断链接数是否已经到了最大,如果没有就去新建一个连接
  4. 如果已经到了最大链接数,就会让程序去等待,如果在等待时候有连接的释放或者归还,则可以使用连接,如果没有就返回错误
  5. 当线程使用完连接,就会将其归还给连接池,此时判断此连接是否已经超过最大引用次数,如果达到则销毁,如果没有则归还给连接池供其他线程使用。

当线程从连接池获得连接之后,就可以直接执行SQL了,方便,快捷。

PS:MySQL的默认连接数为100(max_connection),可以根据使用的最大链接数(max_used_connection)来动态调整,理论上最大的链接数为16384(和Redis集群的hash槽一样)。

 

posted @ 2022-02-17 20:43  SakuraFalling  阅读(375)  评论(0)    收藏  举报