gpt4 book ai didi

sql-server - 如何防止使用 XML 类型的 SQLServer JDBC 查询在查询时缓存整个结果集?

转载 作者:行者123 更新时间:2023-12-03 00:52:56 25 4
gpt4 key购买 nike

我有一个查询,它生成一个相当大的 XML 文档(~30k)作为一个大表的每个记录的查询列,其形式...

SELECT recordKey, lastUpdatedDate, ( SELECT ... FOR XML PATH( 'elemName' ), TYPE )
FROM largeTable
ORDER BY lastUpdateDate

如果我从 SQLServer Management Studio 运行此查询,该查询几乎立即返回,如我所料,显示第一行,并继续在后台运行。

但是,当我在 StreamList 模式下从 Camel JDBC 组件运行此查询时,它似乎在查询时缓存了整个结果集,这意味着我耗尽了内存。

我已检查 JDBC 驱动程序属性,并将 responseBuffering 属性显式设置为 adaptive,并且还尝试将 selectMethod 设置为cursor,这两个似乎对我的查询没有任何影响。

这是使用 JDBC 查询 XML 的特性吗?还是需要对某些参数进行不同的设置?

最佳答案

However, when I run this query from the Camel JDBC component in StreamList mode, it appears to cache the entire resultset at the point of querying, which means I run out of memory.

camel-sql引入'StreamList'output type in v2.18.x 。由于您使用的是 v2.17.6,因此您的配置可能会回退到“SelectList”(默认值)。这会导致将整个结果集作为列表加载到内存中。在查询/结果集中包含 xml 类型对此行为没有任何影响。

您可以在以下位置找到此代码:org.apache.camel.component.sql.SqlConsumer.poll()

我建议您将camel-sql版本升级到v18.x(或最新版本)

希望这有帮助。

关于sql-server - 如何防止使用 XML 类型的 SQLServer JDBC 查询在查询时缓存整个结果集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53833800/

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