美文网首页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