首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JDBI批量读取数据?

如何使用JDBI批量读取数据?
EN

Stack Overflow用户
提问于 2022-10-13 23:08:27
回答 1查看 65关注 0票数 0

我想从一张桌子上读取所有数据。该表有400万行,每行有25列。我将获取大小设置为1_000,以避免使用大量数据的JVM过载。但是查询本身由于超时异常而失败。

JDBI是否提供了一个“游标”,它可以批量读取数据,从而避免语句超时?JDBI是否有其他方法可以在没有语句超时的情况下读取这个JDBI?

代码:

代码语言:javascript
复制
 var handle = jdbi.open()
 handle
   .createQuery("SELECT * FROM TEST_TABLE")
   .setFetchSize(1_000)
   .mapToMap()

例外:

代码语言:javascript
复制
query execution canceled due to statement timeout [statement:"SELECT * FROM TEST_TABLE", arguments:{positional:{}, named:{}, finder:[]}]
    at org.jdbi.v3.core.statement.SqlStatement.internalExecute(SqlStatement.java:1796)
    at org.jdbi.v3.core.result.ResultProducers.lambda$getResultSet$2(ResultProducers.java:64)
    at org.jdbi.v3.core.result.ResultIterable.lambda$of$0(ResultIterable.java:57)
    at org.jdbi.v3.core.result.ResultIterable.iterator(ResultIterable.java:43)
EN

回答 1

Stack Overflow用户

发布于 2022-10-20 22:06:35

首先,尝试使用更小的获取大小。

如果这不起作用,您可以尝试在应用程序代码中进行分页。查看这里的文档:https://www.cockroachlabs.com/docs/stable/pagination.html

最后,您的statement_timeout设置为什么?你能举起它吗?

你在小一点的桌子上测试过吗?在不超时的情况下,您可以加载的最大表是什么?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74062707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档