入口点:ProxoolFacade.
启动顺序:
ProxoolDriver -> ProxoolFacade.registerConnectionPool ->
调用顺序
ProxoolDriver.connect -> ConnectionPoolManager.getConnectionPool -> connectionPool.getConnection
-> ProxyConnection = prototyper.buildConnection -> proxyConnection.open();
-> ProxyFactory.getWrappedConnection(proxyConnection)
-> WrappedConnection
之后的调用都使用了proxy模式
关闭链接:
WrappedConnection -> close -> proxyConnection.close()
-> openStatements.close -> connectionPool.removeProxy
真正关闭链接:
HouseKeeper -> connectionPool.removeProxyConnection -> CompositeConnectionListener.onDeath ->
ConnectionListenerIF.onDeath
proxyConnection.reallyClose();
proxyConnections.remove(proxyConnection);
----------------------------------
连接池设计原则:
1. 当没有请求的时候,连接池=0
2. 当有稳定的请求的时候,通过复用connection提高性能。
3. 当突然爆发链接的时候,增加连接池能力
4. 当高峰期过后,能够自动减少连接池能力。
5. 当connection开启了事务之后,这个链接被独占了,无法被分配。
http://www.zhujiangroad.com/html/soft/s2928.html
基于JDBC的数据库连接池技术研究与设计
。 连接添加一个引用计数器
。当用户closeconnection 的时候,判断引用次数》规定?是就删除;判断是否》最小连接数?小于就放回;否则删除。
。每个事务独占一个connection