gpt4 book ai didi

java - hibernate.jdbc.fetch_size 或 @QueryHints(@javax.persistence.QueryHint(名称 ="org.hibernate.fetchSize",值 ="10")) 不起作用

转载 作者:行者123 更新时间:2023-12-02 02:24:54 25 4
gpt4 key购买 nike

我们使用 Oracle DB 和 spring JPA(hibernate),为了提高数据获取性能,我添加了 @QueryHints(@javax.persistence.QueryHint(name="org.hibernate.fetchSize", value=100000) ) 显着提高了性能。

现在,当我想将其更改为较小的值(例如 100 或 10)时,它不起作用。它仍然可以快速完成,这与以前的行为不同(等待几分钟完成数据获取),但我有时会遇到“内存不足”问题。我尝试在属性文件中添加 hibernate.jdbc.fetch_size=10 并更改 QueryHint,但这些都不起作用。如何改回获取大小?

环境:linux

我希望我可以将 hibernate 获取大小更改回较小的值,例如 10 或 100。

最佳答案

default fetch size in oracle已经有 10 条记录,所以在添加此提示时遇到内存不足问题很奇怪。特别是如果 100000 不构成问题的话。

我会做一些事情来查明问题并提供解决方案:

准系统测试您的代码

以最小的开销测试负责查询的代码(可能是您的 DAO)。我怀疑内存不足异常更有可能是由于处理数据库结果而不是实际的查询+ fetchsize 造成的。

因此,请暂时更改代码以仅执行查询,但不要对其进行任何映射或其他处理。只要确保它完成即可。

如果这似乎“解决”了您的问题,您可能会对收到的数据执行一些操作,这些数据会淹没您的内存。

更新您的依赖项

如果您使用 maven(或 gradle,或任何其他构建工具),我建议将任何更新至少更新到最新的次要版本(例如 1.2.3 -> 1.2.9),这不应中断但可能会修复一些错误。

不要随意选择获取大小

查看these answers确定适合您的情况的良好获取大小。

关于java - hibernate.jdbc.fetch_size 或 @QueryHints(@javax.persistence.QueryHint(名称 ="org.hibernate.fetchSize",值 ="10")) 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57258890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com