您的位置:首页 > 其它

我们为什么需要连接池?

2005-06-09 13:24 387 查看
当使用
DriverManager
DataSource
方法来获取数据库连接时,每个对新数据库连接的请求都会导致很大的开销。如果频繁地获取新的连接,将会影响性能,这在 Web 服务器环境中可能会出现。为了强调为什么会发生这种情况,让我们来看看一个典型的数据库连接请求的底层途径。
Java 应用程序调用
getConnection()


JDBC 厂商代码(驱动程序或者
DataSource
实现)请求一个来自 JVM 的套接字连接。

JVM 需要检查底层调用的安全方面。例如,applet 只被允许和产生它们的服务器进行通讯。

如果允许,调用需要穿过主机网络接口到公司 LAN 上。

调用可能需要穿过防火墙到达因特网或广域网。

调用最终到达目的子网络,在那里它可能需要穿过另一个防火墙。

调用到达数据库主机。

数据库服务器处理新的连接请求。

许可证服务器可能需要查询来确定是否有适当的许可。

数据库初始化新的客户机连接,包括所有内存和操作系统开销。

返回调用被送回 JDBC 客户机(在那里它必须穿过所有防火墙和路由器)。

JVM 收到返回调用,然后创建适当的
Connection
对象。

请求的 Java 应用程序收到
Connection
对象。
很明显,请求一个新的
Connection
对象会带来大量的开销和很多潜在的错误。为了最小化开销,为什么在我们使用完数据库连接后不是重新使用它们,而是删除它们呢?JDBC 设计者在创建
ConnectionPoolDataSource
时使用这种流行的设计模式,这允许您创建数据库连接池,其中的连接在关闭后可以重用,而不是被删除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: