重新启动后,DB2自动增量会自行更改

时间:2013-04-22 11:35:43

标签: sql db2

每次重新启动DB2服务时,自动增量字段总是自行更改, 例如:在我重新启动之前,自动增量值为13,并且它增加1,并且在我重新启动之后它总是变为31并且它总是增加20 知道可能导致这种情况的原因吗?

每次重新启动Db2服务时,我都必须执行此命令

ALTER TABLE <table> ALTER COLUMN <column> RESTART WITH 1

2 个答案:

答案 0 :(得分:1)

DB2具有生成值的缓存,以减少生成值的开销(减少IO)。此缓存在内存中,并按要求分配值。

创建/更改表时,请查看缓存选项。默认情况下,缓存值为20。

了解序列在DB2中的工作方式非常重要。序列与生成的值/标识列共享许多概念。

答案 1 :(得分:0)

来自W3schools

“自动增量允许在将新记录插入表格时生成唯一编号。”

这是您唯一可以期待的:唯一(=非冲突)数字。如何生成它们留给DBMS。你不能指望没有任何间隙的数字序列。

例如,出于性能原因,DBMS可能会选择“预分配”十个数字块(23..32,33..42,...),因此自动增量字段只能递增每个(最多)十个记录。如果你有一个INSERT语句只能在新创建的表中插入5条记录,它可以“获取10个数字的块”(0..9),使用前五个值(0..4)它,其余的未使用。通过获取这一个数字块,计数器从0递增到10.因此,取出块的下一个INSERT语句将得到10到19之间的数字。