1

每次我重新启动我的 DB2 服务时,自动增量字段总是自行更改,例如:在我重新启动之前,自动增量值是 13,它增加了 1,我重新启动后它总是变成 31,它总是增加 20 知道是什么原因造成的吗?

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

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

2 回答 2

1

DB2 有一个生成值的缓存,以减少生成值的开销(减少 IO)。此缓存在内存中,并根据请求分配值。

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

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

于 2013-04-22T12:51:46.787 回答
0

来自W3schools

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

这是您唯一可能期望的:唯一(=非冲突)数字。这些是如何生成的则留给 DBMS。你不能期望一个没有任何间隔的数字序列。

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

于 2013-04-22T12:27:45.180 回答