【发布时间】:2019-09-25 21:01:14
【问题描述】:
我们正在使用 JOOQ 开发批处理应用程序。应用程序需要调用序列来获取下一个值以保存大量记录。这肯定会对性能造成开销。 JOOQ 是否有任何内置方式来处理这个或任何其他替代方法来减少序列调用以缓存序列生成的值?
【问题讨论】:
-
你用的是什么关系型数据库?
-
您是否只是假设这将是一个性能问题?还是你真的测试过?获取序列值通常非常快,除非您使用的是慢速网络(具有高延迟),否则我认为这不会是一个大问题(除非您需要每秒获取数百万个序列值)
-
@a_horse_with_no_name:在运行插入之前(使用
FORALL),而不是通过触发器或身份或其他方式在每次插入时调用nextval。当然,我现在必须写一篇博文来支持这一点。现在,对于客户端往返,这种改进可能无关紧要,因为 JDBC 通信的开销要高得多...... -
@LukasEder 我会将
nextval直接放入INSERT 语句中;)(我们仍然不知道ManjuGH 是使用Oracle 还是Postgres 还是SQL Server 还是DB2) -
@a_horse_with_no_name:我也愿意,但我当时的情况并没有提供这种可能性,因为必须在实际插入语句之前获取相当长的序列值。忘了为什么。 有一个原因。