问题标签 [scrollableresults]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10034 浏览

java - 不能将 resultSet.setFetchDirection(ResultSet.TYPE_SCROLL_SENSITIVE) 与 spring jdbc DaoSupport 与 Oracle 一起使用

我想使用可滚动的结果集,所以当我使用两行代码时:

在我的 DAOimpl 中,我得到了异常,请帮助解决它们,在此先感谢。

这是例外

///////////////////////////////////////// //////////////////////////////////

我改变如下,我没有得到任何结果,通常,我的程序返回 100 个用户:

0 投票
4 回答
2289 浏览

hibernate - 是否可以使用 JPA 从 javax.persistence.Query.getResultList() 流式传输结果?

我是 JPA 的新手,我想知道是否可以从结果集中流式传输数据,我的意思是我不想等待执行查询以开始处理第一个结果,例如在这种情况下一批。

是否有可能使用 JPA API 或任何社区采用的解决方法?最终使用 JPA 实现的功能?

0 投票
2 回答
5646 浏览

java - Hibernate ScrollableResults 不返回整个结果集

我们运行的一些查询有 100,000 多个结果,加载它们然后将它们发送到客户端需要很长时间。所以我使用 ScrollableResults 来获得分页结果功能。但是我们以大约 50k 个结果(从不完全相同数量的结果)达到顶峰。

我在 Oracle9i 数据库上,使用 Oracle 10 驱动程序,Hibernate 配置为使用 Oracle9 方言。我尝试使用最新的 JDBC 驱动程序 (ojdbc6.jar) 并重现了问题。

我们也遵循了一些建议并添加了一个排序条款,但问题被重现了。

这是一个代码片段,说明了我们的工作:

那么,为什么我得到的结果集在最后告诉我它什么时候应该有更多的结果呢?

0 投票
12 回答
86677 浏览

java - 使用 Hibernate 的 ScrollableResults 慢慢读取 9000 万条记录

我只需要使用 Hibernate 读取 MySQL 数据库中表中的每一行并基于它编写一个文件。但是有 9000 万行,而且非常大。因此,以下内容似乎是合适的:

问题是上面将尝试将所有 9000 万行加载到 RAM 中,然后再进入 while 循环......这会用 OutOfMemoryError: Java heap space exceptions 杀死我的内存:(。

所以我猜 ScrollableResults 不是我想要的?处理这个问题的正确方法是什么?我不介意这个 while 循环是否需要几天时间(我不希望这样)。

我想处理这个问题的唯一其他方法是使用 setFirstResult 和 setMaxResults 来遍历结果,并且只使用常规的 Hibernate 结果而不是 ScrollableResults。感觉好像它效率低下,并且当我在第 89 百万行调用 setFirstResult 时将开始花费非常长的时间......

更新: setFirstResult/setMaxResults 不起作用,结果需要很长时间才能达到我担心的偏移量。这里一定有解决办法!这不是一个非常标准的程序吗?我愿意放弃 Hibernate 并使用 JDBC 或任何它需要的东西。

更新2:我想出的解决方案可以正常工作,但不是很好,基本上是以下形式:

由于我还有其他条件,即使全部在索引中,它仍然没有我希望的那么快......所以仍然开放其他建议..

0 投票
2 回答
10625 浏览

hibernate - Hibernate Criteria group by 的结果计数 - 返回的总分组记录

我有一个基于标准的查询,具有以下分组:

生成的 SQL 是(专有的,因此已清理):

现在,从概念上讲,我想用 count(*) 包装查询结果,这样数据就永远不会从数据库中返回,而只是计数。像这样:

可能有数千行我不需要并且我对高性能感兴趣,所以我不希望这些数据通过网络传输。

我的基于条件的搜索有许多条件。我无法真正重建它,所以我真的需要坚持使用 Criteria。

当然,添加 rowCount 或 count("xyz") 没有帮助,因为它只为每一行报告 1。

我目前正在这样做以获取计数:

它有效,但需要很长时间才能返回计数(如果重要,请在 Oracle 上)。

我可以按照我的提议去做吗?

0 投票
1 回答
801 浏览

spring - 休眠性能问题:ScrollableResults 与 firstResult/maxResult

正如您看到的标题,我很高兴听到您的回答,即从 db 中选择大数据时哪个更方便性能!

对于哪种情况最好选择哪种方法,为什么?

(PS:没有像一对多这样的映射关系。只是从一个包含数百万数据的巨大表中选择行-mysql-)

提前致谢。

0 投票
3 回答
462 浏览

java - 关于 JDBC ResultSet 的建议

我有员工表和一个实体类,
我的任务是我需要两次结果集中(可滚动类型
)中的员工表数据, 在这种情况下,第二次使用数据会更好->

1:在第一次遍历结果集时,创建实体类的实例并将其存储在List中。

2:第一次迭代后调用结果集的 first() 方法返回第一行并第二次使用数据。

哪个选项将消耗更少的时间和资源。
如果您有更好的建议,请提供。
谢谢。

0 投票
2 回答
1505 浏览

java - 渴望在 Hibernate 中使用 ScrollableResults 获取集合

我正在尝试使用 Hibernate 从表中检索大约 1 亿行。我有一个包含费用集合的持久实体项目(另一个持久实体)。鉴于我遍历结果并访问每个对象的费用,我想急切地获取费用以避免 n+1 问题。

我还应该提到我想将它加入另一个名为 Provider 的表(一对一映射但没有外键)。我试过:

我的 Order 类包含一个 Provider 字段和一个 Item 字段。我收到此错误:

引起:org.hibernate.QueryException:查询指定连接提取,但提取关联的所有者不存在于选择列表中

我想最终得到一个可滚动的订单列表,其中包含项目(急切收取的费用)和提供者。

0 投票
1 回答
4932 浏览

php - PHP PDO MySQL可滚动游标不起作用

例如,我有一个包含两个字段的表:id、value。我在这个表中插入了近 100k 行。

我想使用可滚动光标。我写了以下代码:

我究竟做错了什么?

0 投票
1 回答
780 浏览

hibernate - 通过 HQL 的 Hibernate ScrollableResults 需要为每个关联获取左连接

希望一些 Hibernate 大师可以提供帮助。

我有一个看起来像这样的对象结构:

这三个都被注释为 Hibernate 实体,并且所有关联都是默认的(使用 Hibernate 3.2,因此默认情况下应该是惰性的。

我想使用这个 HQL 来获得结果,使用ScrollableResults. 我已经完成了所需的咒语以使结果集流式传输。

但我得到“java.sql.SQLException:流式传输结果集 com.mysql.jdbc.RowDataDynamic@633f8d4f 仍然处于活动状态。当任何流式传输结果集打开并在给定连接上使用时,不会发出任何语句。确保您有在尝试更多查询之前,在任何活动的流结果集上调用 .close()。”

我有 sql 查询登录,我可以清楚地看到它在向前滚动试图在 Report 上获取一个不相关的属性。

所以我开始发展我的 HQL 以包括这些领域。

现在看起来像

即使有大约 25 个连接,我仍然有更多正在加载的字段导致相同的异常。我可以继续手动遍历图表,但这需要很长时间,我觉得这不应该是必要的。查看 Hibernate 代码,滚动调用似乎TwoPhaseLoad尝试初始化对象中的所有代理和延迟加载的字段,这必然打破了滚动运行时不执行其他 sql 查询的要求。这对外面的任何人都有意义吗?