s*******e 发帖数: 174 | 1 【 以下文字转载自 Database 讨论区 】
发信人: shrubRose (喵喵喵), 信区: Database
标 题: connection pool 面试题
发信站: BBS 未名空间站 (Fri Nov 20 14:15:07 2009, 美东)
1. there are only 6 db connections in the pool, all 6 are being used,
another request needs to connect to DB, it does not want to wait. How to do
it? One solution is to make a new connection and add it to the pool. But the
interviewer wants standby solution. Anyone knows the standby solution?
Thanks
2. For the db connection. min = 10 and max = 40.
Will 10 connection | t********k 发帖数: 808 | 2 连接池的分配与释放,对系统的性能有很大的影响。合理的分配与释放,可以提高
连接的复用度,从而降低建立新连接的开销,
同时还可以加快用户的访问速度。
对于连接的管理可使用空闲池。即把已经创建但尚未分配出去的连接按创建时间存
放到一个空闲池中。每当用户请求一个连接时,
系统首先检查空闲池内有没有空闲连接。如果有就把建立时间最长(通过容器的顺序存
放实现)的那个连接分配给他(实际是先做连接是否有效的判断,
如果可用就分配给用户,如不可用就把这个连接从空闲池删掉,重新检测空闲池是否还
有连接);如果没有则检查当前所开连接池是否达到连接池
所允许的最大连接数(maxConn),如果没有达到,就新建一个连接,如果已经达到,就
等待一定的时间(timeout)。
如果在等待的时间内有连接被释放出来就可以把这个连接分配给等待的用户,如果等待
时间超过预定时间timeout,则返回空值(null)。
系统对已经分配出去正在使用的连接只做计数,当使用完后再返还给空闲池。对于空闲
连接的状态,可开辟专门的线程定时检测,
这样会花费一定的系统开销,但可以保证较快的响应速度。也可采取不开辟专门线程,
只是在分配 |
|