3

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

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

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

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

Spring Boot 文档说:

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 的教程(1、2),但没有解释这种设置的任何优点。我发现一个旧的 StackOverflow 答案提到了一些“非阻塞架构”,但我仍然不确定它是否使 UCP 比 HikariCP 更有价值或更可靠。

4

1 回答 1

1

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

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

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

于 2021-08-17T07:01:02.827 回答