每次重新启动DB2服务时,自动增量字段总是自行更改, 例如:在我重新启动之前,自动增量值为13,并且它增加1,并且在我重新启动之后它总是变为31并且它总是增加20 知道可能导致这种情况的原因吗?
每次重新启动Db2服务时,我都必须执行此命令
ALTER TABLE <table> ALTER COLUMN <column> RESTART WITH 1
答案 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之间的数字。