从数据库缓存序列以减少数据库调用

时间:2019-05-08 07:17:30

标签: java sql jooq

我们正在使用JOOQ开发批处理应用程序。应用程序要求调用序列以获取持久存储大量记录的下一个值。这绝对是性能的开销。 JOOQ是否有任何内置的方式来处理此问题或其他替代方法来减少序列调用以缓存序列生成的值?

1 个答案:

答案 0 :(得分:0)

我假设您正在计划获取例如一口气将100个序列号输入客户端,以便在单个后续批处理操作中使用它们。这可以使用以下jOOQ语句来实现,例如在Oracle中:

SELECT seq.nextval
FROM dual
CONNECT BY level <= 100;

或与jOOQ

ctx.select(SEQ.nextval())
   .connectBy(level().le(100))
   .fetch();

根据您使用的RDBMS,您需要将connectBy()语法替换为标准的WITH语法进行递归,或者将其替换为PostgreSQL中的generate_series(),或者查询表解决方法,其中包含所需的行数。