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

ant*_*tak 5 mysql apache-commons-dbcp

我正在使用带有连接池的 MySQL 临时表.

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

这会导致DB上的资源泄漏,因为临时表不会立即释放,以及由于表名冲突而导致的名称冲突.

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

  • 似乎没有与MySQL 相同的SQL Serversp_reset_connection.
  • 即使有,我也看不到dbcp2如何配置为在返回连接时调用它.
  • 返回池时始终关闭物理连接可以正常工作,但我无法看到dbcp2如何配置来执行此操作.

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

小智 -1

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