数据库连接池要点:
1、变量:每个连接有状态,表示使用、未使用、被HouseKeeping检测中。
每个连接都有创建时间以及使用锁定时间。
每个连接有名字。
数据库连接池整体的属性,比如提供类,服务器,用户密码,最大连接数,最小连接数,当前连接数,数据库连接池重启属性等。
一个线程称为HouseKeeping作为检测线程。
pid表示当前数据库进程,作为日志文件的区别。
2、建立连接阶段:
尝试多次,防止数据库服务器为启动。
成功创建连接后启动HouseKeeping。
3、HouseKeeping作用
首先检查日志文件是否与本进程相符,不符则退出。
然后检查每个数据库连接的警告属性,输出日志后清除。
检查每个数据库连接的状态,不正常或者超时则重启。
暂停20秒,然后重复执行。暂停期间可以被打断。
4、得到一个连接的过程
首先判断是否是在destroy阶段,是的话报错结束。
使用roundRobin的策略获取下一个可用的连接。
如果上述策略不成功,则创建新连接,但要小于最大连接数。
如果已经是最大连接,则暂停2秒,然后重新试10次。
还不行,返回null。
5、destroy阶段
不可获得新连接
housekeeping线程中断,等待mills毫秒。
正在使用的线程等待结束。
到点,挂断所有连接。