美文网首页Druid程序员
Druid配置参数详解-initialSize

Druid配置参数详解-initialSize

作者: codeimport | 来源:发表于2019-12-31 12:49 被阅读0次

Druid配置参数详解-initialSize

Druid是一个由阿里开源的数据库连接池,Druid的配置非常丰富,但是设置不当会对生产环境造成严重影响,网上Druid的资料虽多,但大部分都是互相复制粘贴,有很多不准确甚至完全错误的描述,Druid已经开源很久,而且作者WenShao的工作重心也已经不在Druid上,有些功能估计他自己都不太了解了。本系列将从源代码的角度分析Druid目前的最新版本(1.1.21)各个常用的配置项的具体含义以及是怎么起作用的。

画外音:目前Druid在开源中国举办的2019年度最受欢迎中国开源软件中排名第7名,支持Druid的朋友可以去投票哇。2019年度最受欢迎中国开源软件

initialSize是什么意思?

initialSize:连接池初始化时初始化的数据库连接数

initialSize在哪个阶段会起作用?

当项目第一次进行增,删,改,查的时候,连接池会初始化,这个时候会根据initialSize参数初始化数据库连接放入连接池中。

画外音:这就是为什么第一次进行数据库操作的时候,响应会比较慢的原因,创建数据库连接是很耗时的,所以初始化连接并不是越多越好

initialSize是怎么起作用的?

当连接池初始化时,会调用DruidDataSource的init初始化数据库连接

    public void init() throws SQLException {
        if (inited) {
            return;
        }
        //....
    }
                // init connections
                //poolingCount是连接池中已有连接数
                while (poolingCount < initialSize) {
                    try {
                        PhysicalConnectionInfo pyConnectInfo = createPhysicalConnection();
                        DruidConnectionHolder holder = new DruidConnectionHolder(this, pyConnectInfo);
                        connections[poolingCount++] = holder;
                    } catch (SQLException ex) {
                        LOG.error("init datasource error, url: " + this.getUrl(), ex);
                        if (initExceptionThrow) {
                            connectError = ex;
                            break;
                        } else {
                            Thread.sleep(3000);
                        }
                    }
                }

总结

initialSize的作用是告诉连接池初始化时应该初始化的物理连接数,要注意的是这个值越大,第一次调用数据库时越慢。

相关文章

网友评论

    本文标题:Druid配置参数详解-initialSize

    本文链接:https://www.haomeiwen.com/subject/scuboctx.html