spring - 部署在连接到 mariadb 的 tomcat 上的 Spring 应用程序的连接池的最佳选择
问题描述
在阅读了基于 jdbc 连接池的多个文档后,我无法得出一些结论。哪种连接池方法最适合部署在 tomcat 上并连接到 mariadb 的 spring 应用程序。
mariadb 提供了自己的连接池,另一方面,多个外部池库存在 HikariCp、DBCP、tomcat-jdbc 等。
解决方案
MariaDB 的连接池似乎没有任何基准,因此给出答案可能会受到高度评价,而且它还取决于您的用例,因为基准只有在查看正确的数据时才是相关的。
您可以在这里找到https://mariadb.com/fr/node/1829 MariaDB 的论点,用于提供连接池的另一种实现。
以下是一些原因:
- 可靠性:重用池中的连接时,连接必须像“新创建的”连接。根据连接状态,框架可能会导致执行多个命令来重置状态(一些框架甚至选择跳过其中一些重置以避免一些性能影响)。MariaDB 有一个专用命令来刷新连接状态,允许在一个命令中进行真正的重置(回滚剩余事务、重置事务隔离级别、重置会话变量、删除用户变量、删除所有 PREPARE 语句……)。
- 性能:池可以在第一次连接时保存一些信息,从而在建立下一个连接时可以更快地创建。
- 配置简单:解决一些常见的问题,比如一段时间不使用服务器会关闭套接字(wait_timeout 默认为 8h)。池实现避免将连接保持在不良状态
对于其他 CP 实现,有很多基准测试,其中 HikariCP 作为整体更好的选择脱颖而出,现在是 Spring Boot 2 中的默认设置。
最后,它归结为您尝试 MariaDB 的连接池或依赖已经建立的实现。
推荐阅读
- c++ - 我们可以直接为任何数据成员赋值。为什么要使用构造函数?
- php - 在 json 响应中选择一个数组
- c# - 如何在 ASP.Net-Core 2.2 的 startup.cs 中注入 ControllerContext
- java - 无法运行程序“mysqldump”:错误=2,没有这样的文件或目录:mysqldump 似乎在 Heroku ClearDB 上不存在
- html - html中两个图像之间令人讨厌的黑线
- database - 如果当前节点左侧的叶节点有空间,我应该在插入之前重新分配记录吗?
- javascript - 如何计算现在日期和恒定日期之间的差异。并像 1d,1m,1w 一样编辑它
- swift - 覆盖泛型函数会产生错误
- php - Botman 不听答案并再次打开有效载荷
- python - 两个数据框的 Pandas join.fillna 将所有值都替换为 anf 不仅是 nan