【问题标题】:How to make Oracle UCP always store several available connections如何使 Oracle UCP 始终存储多个可用连接
【发布时间】:2012-11-05 18:55:07
【问题描述】:

我正在创建连接管理器类,它将java.sql.Connection 返回给该类的客户。 我的目标是在池中始终有 2 个可用连接,这样我就不会浪费时间来创建连接。当我返回可用连接时,我需要让 Oracle UCP 创建新的可用连接,所以它总是有 2 个可用连接。

问题是 Oracle UCP 没有控制它的选项。我已经阅读了UCP documentation,但没有找到任何解决方案。

setMinPoolSize() 方法,但它控制可用+借用连接,而不仅仅是可用连接。

还有一个可收集的连接功能,但它收集现有(借用)连接而不是创建新连接。

注意: 我正在使用 Oracle 11.2.0.3 和最新的 ucp.jar(适用于 Oracle 11.2.0.3)

【问题讨论】:

    标签: java oracle jdbc ucp


    【解决方案1】:

    没有这样的解决方案。当从连接池请求连接时,要么从池中检出,要么创建一个新连接。执行请求的线程会产生此成本。如果您总是希望在池中保持比使用中的多 2 个连接,那么您只是在转移问题:当一个连接被签出并且available < 2 时,将添加一个连接。请求连接的线程再次产生的成本(理论上是的,这可以卸载到单独的线程/执行器,但这会使池复杂化)。

    连接池旨在降低创建连接的成本,通过保持连接可重复使用并因此“分散成本”,它并不打算完全消除成本。

    【讨论】:

    • 马克,谢谢你的回答。实际上,我认为可以将可用连接的创建移至单独的线程(我认为这是在 UCP 中完成的方式)。
    • 库等通常不应该创建额外的线程(尤其是不在应用程序服务器中),因为它使资源管理更加困难(如果您使用许多不同的数据库库,这也可能意味着创建的线程)。例如,初始池大小可能在初始化数据源时被填充,或者在第一个或多个线程请求连接时产生成本。
    猜你喜欢
    • 2011-01-26
    • 2016-04-06
    • 2016-12-10
    • 1970-01-01
    • 2015-06-15
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多