是否存在性能影响或任何类型的问题? 我这样做的原因是我们在两组具有相似表的DB之间进行了一些同步,我们希望在同步数据时避免重复的PK错误。
答案 0 :(得分:5)
是的,没关系。
注意:如果您有性能问题,可以使用“CREATE SEQUENCE”中的“CACHE”选项:
“指定数据库预先分配并保留在内存中的序列值以便更快地访问。此整数值可以有28个或更少的数字。此参数的最小值为2.对于循环的序列, value必须小于循环中的值的数量。您不能缓存比给定循环序列号更多的值。因此,CACHE允许的最大值必须小于由以下公式确定的值:
(CEIL (MAXVALUE - MINVALUE)) / ABS (INCREMENT)
“如果发生系统故障,所有未在已提交的DML语句中使用的高速缓存序列值都将丢失。潜在的丢失值数等于CACHE参数的值。”
答案 1 :(得分:3)
不确定。你打算做什么实际上是一种相当普遍的做法。只需确保用于保存ID的客户端代码中的变量足够大(即使用long而不是int)
答案 2 :(得分:3)
我们最近创建具有非常大种子的表的唯一问题是当我们尝试与我们无法控制的系统接口时。该系统显然是将我们的ID作为char(6)字段读取,因此当我们发送行10000000时,它将无法写入。
在性能方面,我们发现使用大型ID号没有任何问题。
答案 3 :(得分:1)
我们没有看到任何性能影响。我经常大量提高序列。如果您需要将数据“回填”到表格中,这些差距会派上用场。
我们遇到问题的唯一一次是在一个特定的客户端程序上,一个非常大的序列超过了MAXINT。序列很好,但在客户端应用程序中转换为整数开始失败!在我们的例子中,很容易重构表中的ID列并重新运行,但回想起来,如果表的排列方式不同,这可能是一个混乱的情况!
答案 4 :(得分:0)
如果要同步两个表,为什么不更改PK种子/增量量,以便在添加新PK时一切都自行处理?
假设您必须同步10个不同数据库中10个患者表的数据 我们还要说最终所有数据库都必须同步到总部的患者表中。
每行增加10个PK,但确保每个数据库的最后一个数字不同。
DB0 10,20,30 ..
DB1 11,21,31 ..
.....
DB9 19,29,39 ..
当所有内容合并时,保证不会发生冲突。
这很容易扩展到n个数据库表。只需确保您的PK密钥类型不会溢出。我觉得BigInt对你来说可能够大......