我们有一个(Java,JPA:EclipseLink)应用程序连接到MySQL。
在某些情况下,我们希望获取数千个结果,并按结果执行操作。我们不希望将整个结果集保存在内存中。
JPA:EclipseLink' s queries with a "scrollable cursor"允许我们懒洋洋地遍历结果集,一次只保留一个内存结果。
我理解这些查询带有"可滚动游标"在MySQL中实现为cursor。
消费者有责任"关闭"任何MySQL游标。
我们无法保证光标关闭。当我们到达结果集的末尾时,我们自然会关闭光标,但有些问题会阻止我们迭代:
之前我们已经观察到:打开许多游标,耗尽数据库连接池中的可用连接。达到限制后:后续查询失败,因为没有其他数据库连接可用。
我们怀疑完成一项事务将关闭参与该事务的所有打开的数据库游标。如果是这样的话:这将提供非常有用的保障。然而,我们还没有衡量这是否确实发生了,并且还没有确定什么级别的交易提供这种保护(MySQL事务?JPA事务?Spring事务?)。以下问题的答案将使我们能够衡量这一点......
在MySQL中是否可以显示所有当前打开的数据库游标的列表?如果是这样的话:怎么样?