2016-12-20 37 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)替代(或在加成)。 –