我应该将Oracle的UCP或HikariCP用于现代应用程序吗?



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

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

在start.spring.io中生成的Fresh 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更有价值或更可靠。

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

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

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

相关内容

最新更新