【问题标题】:Should I use Oracle's UCP or HikariCP for a modern application?对于现代应用程序,我应该使用 Oracle 的 UCP 还是 HikariCP?
【发布时间】:2021-10-18 18:52:33
【问题描述】:

对于使用 Oracle OLTP 数据库作为数据源的现代后端 Java 应用程序,我应该使用哪一个?

对我来说,HikariCP 看起来像是现代 Java 应用程序事实上的标准池。但现在我需要维护一些过去的项目,该项目目前停留在 Oracle 驱动程序 v11 并使用 UCP。我现在想知道:Oracle 的UCPHikariCP 有什么优势吗?你会使用 UCP 还是 HikariCP?

start.spring.io 生成的新 Spring Boot 项目将默认使用 HikariCP(尽管从 2.4 开始支持 UPC),直到您在 application.properties 中明确强制执行 UCP:

spring.datasource.type=oracle.ucp.jdbc.PoolDataSource

Spring Boot docs 说:

1. We prefer HikariCP for its performance and concurrency. If HikariCP is available, we always choose it.
...
4. If none of HikariCP, Tomcat, and DBCP2 are available and if Oracle UCP is available, we use it.

Oracle 网站包含有关如何在 Spring Boot 中使用 UCP 的教程(12),但没有解释这种设置的任何优点。我发现 old StackOverflow answer 提到了一些“非阻塞架构”,但我仍然不确定 UCP 是否比 HikariCP 更有价值或更可靠。

【问题讨论】:

标签: oracle hikaricp ucp


【解决方案1】:

Oracle UCP 池比 HikariCP 具有更多功能:“标记”允许您标记特殊连接以供以后重用,“请求边界”是 JDK9 中的新标准,它在借用连接时向驱动程序提供提示或发布到池中、诊断和可观察性 MBean 以及一系列特定于 Oracle 数据库的集成特性,例如应用程序连续性、RAC 故障转移、分片等。

UCP 的表现也非常好。它会定期进行性能评估,并且由于其非阻塞基础架构,可以维持由数千个线程共享的大量连接。

请注意,UCP 在云端和本地的 Oracle 数据库用户中拥有非常庞大的用户社区。​​p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2018-10-22
    • 1970-01-01
    • 2017-02-12
    • 2010-10-25
    相关资源
    最近更新 更多