|
|
|
@ -165,11 +165,11 @@ public class UnpooledDataSource implements DataSource {
|
|
|
|
|
```
|
|
|
|
|
### 1.3 PooledDataSource
|
|
|
|
|
数据库建立连接是非常耗时的,且并发的连接数也非常有限。而数据库连接池可以实现数据库的重用、提高响应速度、防止数据库因连接过多而假死等。
|
|
|
|
|
数据库连接池的设计思路一般为:
|
|
|
|
|
1. 连接池初始化时创建一定数量的连接,并添加到连接池中备用;
|
|
|
|
|
2. 当程序需要使用数据库连接时,从连接池中请求,用完后会将其返还给连接池,而不是直接关闭;
|
|
|
|
|
3. 连接池会控制总连接上限及空闲连接上线,如果连接池中的连接总数已达上限,且都被占用,后续的连接请求会短暂阻塞后重新尝试获取连接,如此循环,直到有连接可用;
|
|
|
|
|
4. 如果连接池中空闲连接较多,已达到空闲连接上限,则返回的连接会被关闭掉,以降低系统开销。
|
|
|
|
|
**数据库连接池的设计思路一般为:**
|
|
|
|
|
1. **连接池初始化时创建一定数量的连接,并添加到连接池中备用;**
|
|
|
|
|
2. **当程序需要使用数据库连接时,从连接池中请求,用完后会将其返还给连接池,而不是直接关闭;**
|
|
|
|
|
3. **连接池会控制总连接上限及空闲连接上线,如果连接池中的连接总数已达上限,且都被占用,后续的连接请求会短暂阻塞后重新尝试获取连接,如此循环,直到有连接可用;**
|
|
|
|
|
4. **如果连接池中空闲连接较多,已达到空闲连接上限,则返回的连接会被关闭掉,以降低系统开销。**
|
|
|
|
|
|
|
|
|
|
PooledDataSource 实现了简易的数据库连接池功能,其创建数据库连接的功能依赖了上面的 UnpooledDataSource。
|
|
|
|
|
#### 1.3.1 PooledConnection
|
|
|
|
|