gpt4 book ai didi

database - 什么是数据库池?

转载 作者:IT老高 更新时间:2023-10-28 11:27:05 26 4
gpt4 key购买 nike

我只是想知道数据库连接池的概念以及它是如何实现的。

最佳答案

数据库连接池是一种用于保持数据库连接打开以便其他人可以重用的方法。

通常,打开数据库连接是一项昂贵的操作,尤其是在远程数据库的情况下。您必须打开网络 session 、进行身份验证、检查授权等等。池化使连接保持事件状态,以便在稍后请求连接时,使用其中一个事件连接,而不是必须创建另一个连接。

接下来的几段请引用下图:

  +---------+
| |
| Clients |
+---------+ |
| |-+ (1) +------+ (3) +----------+
| Clients | ==#==> | Open | ==> | RealOpen |
| | | +------+ +----------+
+---------+ | ^
| |(2)
| /------\ +---------+ (6) +-----------+
| | Pool | --> | Cleaner | ==> | RealClose |
| \------/ +---------+ +-----------+
(4) | ^
| |(5)
| +-------+
#==> | Close |
+-------+

在最简单的形式中,它只是对 Open API 调用的 API 调用 (1),类似于“真正的”API 调用 RealOpen。这首先检查池中是否存在合适的连接 (2),如果可用,则将其提供给客户端。否则会创建一个新的 (3) 并提供给客户端。

“合适的连接”只是一个已经拥有使用正确信息(例如数据库实例、凭据和可能的其他信息)访问数据库的连接。

同样,有一个 Close API 调用 (4),它实际上并不调用 real RealClose,而是将连接恢复放入池 (5) 中供以后使用。在某些时候,池中的连接可能实际上关闭 (6)。这可以通过一个线程来完成,该线程持续监控池并在它们足够老或满足某些其他条件时调用 RealClose

这是一个非常简单的解释。实际的实现可能会更加复杂,例如前面提到的:

  • 处理与多个服务器的连接并使用多个用户帐户;
  • 使用任意规则来决定何时应该真正关闭连接,例如连接的年龄、有多少类似的连接等等。

数据库连接池是更通用的一种特殊情况,即维护缓存的东西,这些东西启动起来可能很昂贵。正如您从 a similar answer of mine 中看到的那样,它也可以应用于线程池(或备份磁带池、通信设备、激光切割机或许多其他不同的东西)。

在所有情况下,最好将另一种资源联机而不是使用以前联机的资源“昂贵”。

链接的答案还显示了一种可能的算法来决定何时启动或(完全)关闭资源。

关于database - 什么是数据库池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4041114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com