Druid配置參數詳解-initialSize

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的作用是告訴連接池初始化時應該初始化的物理連接數,要注意的是這個值越大,第一次調用數據庫時越慢。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。