MYSQL 能支持多少连接?

MYSQL的TCP连接支持长连接,所以每次操作完数据库,可以不必直接关掉连接,而是等待下次使用的时候在复用这个连接。所有的Socket长连接都是通过TCP自带的ping来维持心跳(TCP保活),从而保持连接状态。

长连接的好处很多,自然大家都用长连接。慢慢就搞出一套长连接维护的工具 - 数据库连接池。

MYSQL 的最大连接数在5.7 - 8.x 版本中默认是151, 最大可以达到16384(2^14)。如何设置最大连接数在于你的服务器性能,查看 MYSQL连接数信息命令:
show variables like 'max_connections';

查询当前数据库已建立连接数:
show status like 'Threads_connected';

连接池设置多少连接才合适?

设置连接池的大小肯定不是越大越好,需要考虑的是当前服务所在机器的性能,网络状况,数据库机器性能,数据库特性等等。

PostgreSQL提供了一个设置预期线程池大小的公式:
connections = ((core_count * 2) + effective_spindle_count)
其中,core_count是CPU核心, effective_spindle_count 的含义是有效主轴数,如果你的服务器使用的是带有16个磁盘的RAID,那么valid_spindle_count=16。它实质上是服务器可以管理多少个并行I / O请求的度量。

5ae27afb9341438580d7264dce9646f7_tplv-obj_1062_500.png