如何显示所有打开的数据库游标的列表?

时间:2016-07-25 16:53:57

标签: mysql jpa eclipselink

上下文

我们有一个(Java,JPA:EclipseLink)应用程序连接到MySQL。

在某些情况下,我们希望获取数千个结果,并按结果执行操作。我们不希望将整个结果集保存在内存中。

JPA:EclipseLink' s queries with a "scrollable cursor"允许我们懒洋洋地遍历结果集,一次只保留一个内存结果。

我理解这些查询带有"可滚动游标"在MySQL中实现为cursor

问题

消费者有责任"关闭"任何MySQL游标。

我们无法保证光标关闭。当我们到达结果集的末尾时,我们自然会关闭光标,但有些问题会阻止我们迭代:

  • 抛出异常
  • 程序退出
  • 故意提前退出迭代
    • e.g。问题只是"是否返回了非零数量的结果?"

轶事

之前我们已经观察到:打开许多游标,耗尽数据库连接池中的可用连接。达到限制后:后续查询失败,因为没有其他数据库连接可用。

我们怀疑完成一项事务将关闭参与该事务的所有打开的数据库游标。如果是这样的话:这将提供非常有用的保障。然而,我们还没有衡量这是否确实发生了,并且还没有确定什么级别的交易提供这种保护(MySQL事务?JPA事务?Spring事务?)。以下问题的答案将使我们能够衡量这一点......

问题

在MySQL中是否可以显示所有当前打开的数据库游标的列表?如果是这样的话:怎么样?

0 个答案:

没有答案