pax*_*blo 175
数据库连接池是一种用于保持数据库连接处于打开状态的方法,以便其他人可以重用它们.
通常,打开数据库连接是一项昂贵的操作,尤其是在数据库是远程的情况下.您必须打开网络会话,进行身份验证,检查授权等.池化使连接保持活动状态,以便在稍后请求连接时,优先使用其中一个活动连接而不必创建另一个连接.
以下几段请参考下图:
+---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ===#===> | Open | =======> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| | (2)
| /------\
| | Pool |
| \------/
(4) | ^
| | (5)
| +-------+ (6) +-----------+
#===> | Close | ======> | RealClose |
+-------+ +-----------+
Run Code Online (Sandbox Code Playgroud)
在它最简单的形式中,它只是一个类似于开放连接API调用的API调用(1),类似于"真实"调用.这首先检查池是否有合适的连接(2),如果可用,则检查给客户端.否则创建一个新的(3).
类似地,有一个关闭的API调用(4)实际上并不调用真正的关闭连接,而是将连接放入池(5)供以后使用.在某些时候,池中的连接可能实际上是关闭的(6).
这是一个非常简单的解释.真正的实现可能能够处理到多个服务器和多个用户帐户的连接,它们可以预先分配一些连接基线,以便一些立即就绪,并且当使用模式静默时它们实际上可以关闭旧连接.
zen*_*ngr 84
图像说千言万语(paxdiablo给出了一个很棒的描述):