2016-12-20 39 views
0

in c3p0,maxIdleTime表示:c3p0:maxIdleTime真的意味着什麼?

maxIdleTime:(默認值:0)秒數連接可以保持池化,但在丟棄之前未使用。零意味着空閒連接永不過期。

我不明白。比方說,如果在連接池中有10個等待連接,並且在maxIdleTime傳遞後,仍然沒有新的數據庫請求,那麼應該丟棄所有這些連接?那麼等待連接池中將會有0個?

回答

0

如果池中有10個連接且沒有活動,那麼在maxIdleTime過後,是的,它們都將過期。

但這並不意味着池中將不會有連接。在池連接到舊連接的同時,它將從DBMS獲取開始的新連接,以支持minPoolSize配置參數。

+0

爲什麼需要設置maxIdleTime?將新的連接放入池中比讓這些「過期的」連接保留在那裏貴很多 – lily

+0

因爲您不信任已經閒置太久的連接,所以您設置了「maxIdleTime」,您擔心它們可能已經由DBMS失效或無效以其他方式損壞。如果您不希望長時間閒置的連接被替換,您只希望池縮小,則可以使用[maxIdleTimeExcessConnections](http://www.mchange.com/projects/c3p0/#maxIdleTimeExcessConnections)替代(或在加成)。 –