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

这里的标签div可换成任意html标签

<div class="layui-badge layui-bg-blue" data-title="团购信息" data-area="90%,85%" ew-event="open" data-type="2" data-content="http://www.baidu.com.com">团体</div>

/**
     * 获取两个日期之间的所有日期
     * @param string $startDate 2022-08-08
     * @param string $endDate 2022-08-08
     * @return array
     */
    function get_between_date($startDate = null, $endDate = null): array
    {
        $dates = [];
        $startTime = strtotime($startDate);
        $endTime = strtotime($endDate);
        if ($startTime > $endTime) {
            //如果开始日期大于结束日期,直接return 防止下面的循环出现死循环
            return $dates;
        } elseif ($startTime == $endTime) {
            //开始日期与结束日期是同一天时
            $dates[] = $startDate;
            return $dates;
        } else {
            $dates[] = date('Y-m-d', $startTime);
            while ($startTime < $endTime) {
                $startTime = strtotime('+1 day', $startTime);
                $dates[] = date('Y-m-d', $startTime);
            }
            return $dates;
        }
    }

<?php
echo date('Y-m-d H:i:s',strtotime('now'));//当前时间戳 2017-01-09 21:04:11
echo date('Y-m-d H:i:s',strtotime('+1second'));//当前时间戳+1秒 2017-01-09 21:04:12
echo date('Y-m-d H:i:s',strtotime('+1minute'));//当前时间戳+1分 2017-01-09 21:05:11
echo date('Y-m-d H:i:s',strtotime('+1hour'));//当前时间戳+1小时 2017-01-09 22:04:11
echo date('Y-m-d H:i:s',strtotime('+1day'));//当前时间戳+1天 2017-01-10 21:04:11
echo date('Y-m-d H:i:s',strtotime('+1week'));//当前时间戳+1周 2017-01-16 21:04:11
echo date('Y-m-d H:i:s',strtotime('+1month'));//当前时间戳+1月 2017-02-09 21:04:11
echo date('Y-m-d H:i:s',strtotime('+1year'));//当前时间戳+1年 2018-01-09 21:04:11
echo date('Y-m-d H:i:s',strtotime('+12year 12month 12day 12hour 12minute 12second'));//当前时间戳+12年,12月,12天,12小时,12分,12秒 2030-01-22 09:16:23
$t=1483967416;//指定时间戳
echo $dt=date('Y-m-d H:i:s',$t);//2017-01-09 21:10:16
/*方法一*/
echo date('Y-m-d H:i:s',$t+1*24*60*60);//指定时间戳+1天 2017-01-10 21:10:16
echo date('Y-m-d H:i:s',$t+365*24*60*60);//指定时间戳+1年 2018-01-09 21:10:16
/*方法二*/
//$dt是指定时间戳格式化后的日期
echo date('Y-m-d H:i:s',strtotime("$dt+1day"));//指定时间戳+1天 2017-01-10 21:10:16
echo date('Y-m-d H:i:s',strtotime("$dt+1year"));//指定时间戳+1年 2018-01-09 21:10:16
/*方法三*/
//$t是指定时间戳
echo date('Y-m-d H:i:s',strtotime("+1day",$t));//指定时间戳+1天 2017-01-10 21:10:16
echo date('Y-m-d H:i:s',strtotime("+1year",$t));//指定时间戳+1年 2018-01-09 21:10:16
//指定时间戳加1月、1周、1小时、1分、1秒原理同上;