加入收藏 | 设为首页 | 会员中心 | 我要投稿 惠州站长网 (https://www.0752zz.com.cn/)- 办公协同、云通信、物联设备、操作系统、高性能计算!
当前位置: 首页 > 云计算 > 正文

逐行解读Hikari连接池源码

发布时间:2022-08-02 11:29:55 所属栏目:云计算 来源:互联网
导读:写在前面 几年前,我最开始接触的数据库连接池是 C3P0,后来是阿里的 Druid,但随着 Springboot 2.0 选择 HikariCP 作为默认数据库连接池这一事件之后,HikariCP 作为一个后起之秀出现在大众的视野中,以其速度快,性能高等特点受到越来越多人青睐。 在实际

        if (idleTimeout != 0 && idleTimeout < SECONDS.toMillis(10)) {
           LOGGER.warn("{} - idleTimeout is less than 10000ms, setting to default {}ms.", poolName, IDLE_TIMEOUT);
           idleTimeout = IDLE_TIMEOUT;
        }
        // 连接泄露检测的时间,默认 0 不开启,不能低于 2 秒,不能比 maxLifetime 大,否则不开启
        if (leakDetectionThreshold > 0 && !unitTest) {
           if (leakDetectionThreshold < SECONDS.toMillis(2) || (leakDetectionThreshold > maxLifetime && maxLifetime > 0)) {
              LOGGER.warn("{} - leakDetectionThreshold is less than 2000ms or more than maxLifetime, disabling it.", poolName);
              leakDetectionThreshold = 0;
           }
        }
        // 从连接池获取连接时最大等待时间,默认值 30 秒, 低于 250 毫秒不生效
        if (connectionTimeout < 250) {
           LOGGER.warn("{} - connectionTimeout is less than 250ms, setting to {}ms.", poolName, CONNECTION_TIMEOUT);
           connectionTimeout = CONNECTION_TIMEOUT;
        }
        // 检测连接是否有效的超时时间,默认 5 秒,低于 250 毫秒不生效
        if (validationTimeout < 250) {
           LOGGER.warn("{} - validationTimeout is less than 250ms, setting to {}ms.", poolName, VALIDATION_TIMEOUT);
           validationTimeout = VALIDATION_TIMEOUT;
        }
        // 连接池中连接的最大数量,minIdle 大于 0 与其保持一致,否则默认 10
        if (maxPoolSize < 1) {
           maxPoolSize = (minIdle <= 0) ? DEFAULT_POOL_SIZE : minIdle;
        }
        // 维持的最小连接数量,不配置默认等于 maxPoolSize
        if (minIdle < 0 || minIdle > maxPoolSize) {
           minIdle = maxPoolSize;
        }
     }

(编辑:惠州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读