繁体   English   中英

我应该使用连接池吗?

[英]Should I use connection pooling?

我正在JAVA写一个ETL项目。 我将连接到源数据库,只获取一次数据,进行一些转换并将数据加载到目标数据库。

关键是我没有多次重复连接到源数据库或目标数据库。 我只连接一次(使用JDBC),获取我需要的数据并关闭连接。

我还应该使用连接池吗?

谢谢你的意见!

连接池用于解决许多数据库驱动程序需要很长时间才能创建连接的事实。 如果你只需要很快使用它,然后丢弃它,如果你需要很多连接,那么开销可能很大(包括时间和cpu)。 重用比创建新的更快。

如果您没有这种需要,如果您还没有连接池,则没有理由设置连接池。 如果你碰巧有一个,那就用吧。

我的猜测是,在某些情况下,使用多个线程和并发连接可以提高软件的overvall吞吐量,从而允许例如使用RDBMS服务器或客户端ETL的所有CPU。 这也可以帮助使用这样的事实,即几个表可以物理地位于不同的硬件上,因此可以并行访问。

真正的影响实际上取决于您使用的计算机和数据库的体系结构。

请注意,通常ETL具有排序约束并且同时执行多项操作不应违反这些约束。

编辑:这个例子。 您可以将Oracle配置为使用多个核心执行每个请求。 (如果我理解的话,根据配置和许可证)。 因此,如果允许一个请求仅使用一个核心,则同时使用多个连接将同时允许多个请求,并更好地使用服务器的CPU资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM