连接池并在返回时释放临时表

时间:2016-12-28 03:45:04

标签: mysql apache-commons-dbcp

我正在使用MySQL temporary tablesconnection pooling

通常,会话中创建的临时表会保留在该会话中,并在关闭连接时被删除。但是,由于我在调用java.sql.Connection.close()时使用连接池和物理连接并未实际关闭,因此我发现临时表停留并影响下一个会话。

这会导致数据库资源泄漏,因为临时表不会立即释放,以及由于表名冲突而导致名称冲突。

直观地说,当我借用连接时,我期待一个干净的平板。如何实现这一目标?

  • 对于MySQL来说,它似乎不等同于SQL Server's sp_reset_connection
  • 即使有,我也看不到dbcp2 can be configured在返回连接时如何调用它。
  • 返回池时始终关闭物理连接可以正常工作,但我无法看到如何配置dbcp2来实现这一点。

除临时表外,此问题也会影响:

1 个答案:

答案 0 :(得分:0)

使用MySqlConnection.ClearPool(连接);能行得通。 我对GET_LOCK()有类似的问题,MySqlConnection.ClearPool(连接)可以解决这个问题。