Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Teradata在不同时间段插入记录时以不同范围为起点的自动增量列_Sql_Auto Increment_Teradata - Fatal编程技术网

Sql Teradata在不同时间段插入记录时以不同范围为起点的自动增量列

Sql Teradata在不同时间段插入记录时以不同范围为起点的自动增量列,sql,auto-increment,teradata,Sql,Auto Increment,Teradata,我们有一个表,其自动增量列定义如下: Col1 BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1 INCREMENT BY 1 MINVALUE -999999999999999999 MAXVALUE 999999999999999999 NO CYCLE), 现在,当我们第一次插入49条记录时,这个Col1的值是100001到1

我们有一个表,其自动增量列定义如下:

 Col1 BIGINT NOT NULL GENERATED BY DEFAULT AS IDENTITY
       (START WITH 1 
        INCREMENT BY 1 
        MINVALUE -999999999999999999 
        MAXVALUE 999999999999999999 
        NO CYCLE),
现在,当我们第一次插入49条记录时,这个Col1的值是100001到100049,而不是从1开始。对于下一个小时的插入,值为200001到200049。等等第9小时后,需要1000001到1000049个值

Teradata中的自动增量是如何工作的?它是否在内存中与其他表中的其他自动增量列共享


为什么它不是从1开始,在下一次插入时一直递增1?如何解决此问题?

标识不是单个序列,这将成为并行数据库系统中的瓶颈。事实上,每个表都有多个并行序列,每个解析引擎和每个AMP都有一个序列,每个序列保留一批值(默认值100000)

通过单个会话提交单行插入时,所有行都由同一PE处理,因此按顺序分配值。当您注销并再次登录(或使用多个会话)时,您可能连接到另一个具有不同值范围的PE

插入“选择行”时,序列值由源放大器指定,同样,每个值都有不同的值范围

当TD崩溃或关闭时,所有未使用的值都会丢失(与其他DBMS类似)


在您的情况下,您可能会在这段时间内注销并登录到另一个PE。

在Oracle或Postgres中,我想说的是涉及到一些序列缓存。但我不知道Teradata。可能要查看Sequences的cache属性手册,但永远不能保证标识列是整齐有序的。它们是在每安培的基础上产生的,这就是为什么你会看到这种行为。