减少对Oracle的调用次数以检索新序列[关闭]

问题描述 投票:-1回答:1

在我们的app中,每当我们创建一个新实体时,我们都会调用Oracle来获取实体id的下一个序列。我们正在使用OracleSequenceMaxValueIncrementer。

但我们希望减少对oracle的调用次数。

我想增加序列表上的“递增依据”值。现在它是1.因此,如果我们将增加到10,我们可以每10次调用oracle,而不是每次我们需要一个新的序列。我希望使用OracleSequenceMaxValueIncrementer在代码中获取“Incremented by”值,但它不支持它,因此需要执行常规查询。

这是一个常见的解决方案吗,我猜常见问题?

特别信息:我们用来获取下一个序列的服务被所有实体使用,其中每个人都有不同的序列表,可以有不同的“递增”。这就是为什么我写的我将首先查询数据库以检索特定实体的“递增”。

java oracle performance sequence
1个回答
1
投票
  • 为什么要减少对应用程序的调用次数?面对任何争论?

您可以缓存序列,这将保留内存中每个会话的序列号,用于避免争用。

ALTER SEQUENCE customers_seq 
   CACHE 5; 

CACHE指定数据库预分配的序列值的数量,并保留在内存中以便更快地访问。该整数值可以有28个或更少的数字。此参数的最小值为2.对于循环的序列,此值必须小于循环中的值的数量。您不能缓存超过给定循环序列号的值。因此,CACHE允许的最大值必须小于以下公式确定的值:

参考:https://docs.oracle.com/database/121/SQLRF/statements_6017.htm#SQLRF01314

© www.soinside.com 2019 - 2024. All rights reserved.