关闭 HikariPool 中的连接

Cap*_*ngs 3 java jdbc hikaricp

我有一个独立的 java 应用程序,它使用 Hikaricp 获取消息流、批量并将它们插入到 SQL Server 数据库中。

目前我所做的事情如下:

  • 从池中获取连接。
  • 创建准备好的语句以使用连接插入
  • 执行批量插入。

请注意,我从不关闭连接!一旦达到 maxPoolSize (20),当我尝试获取新连接时会收到错误消息。

我应该在每次批量插入后关闭连接吗?

  • 从池中获取连接。
  • 创建准备好的语句以使用连接插入
  • 执行批量插入。
  • 关闭准备好的语句和连接。

但是,这意味着我要承担从池中获取连接+在每次批量插入后创建新的准备好的语句的成本。

这是推荐的方法还是有任何替代方法可以减少这种额外成本?

Iva*_*van 7

您需要关闭连接。通常池返回包装到另一个对象中的连接。当您调用close包装器时,它只是将内部数据库连接标记为空闲并将其返回到池中。

PreparedStatement如果现有对象相同,您也可以重复使用它们。如果您的每个任务都必须使用其唯一的PreparedStatement(由于您的业务逻辑),那么没有其他方法,您必须PreparedStatement为每个任务创建新的。