進入點: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