簡體   English   中英

Teradata自動增量列以不同范圍為起點,同時在不同時間段插入記錄

[英]Teradata auto-increment column taking different ranges as starting point while inserting records at different time periods

我們有一個表,其中的自動增量列定義如下:

 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。

Teradta中的自動增量到底如何工作? 它是否與其他表中的其他自動增量列共享在內存中?

為什么它不從1開始,而在下一次插入時一直遞增1? 如何解決這個問題?

IDENTITY不是單個序列,這將是並行數據庫系統中的瓶頸。 實際上,對於每個表,有多個並行的序列,每個解析引擎和每個AMP都有一個序列,每個序列都保留一批值(默認值為100,000)。

通過單個會話提交單行INSERT時,所有行均由同一PE處理,因此將按順序分配值。 當您注銷並再次登錄(或使用多個會話)時,您可能會連接到具有不同值范圍的另一台PE。

當您在INSERT SELECT行中插入時,序列值由源AMP分配,每個值又具有不同的值范圍。

當TD崩潰或關閉時,所有未使用的值都會丟失(類似於其他DBMS)。

在您的情況下,您可能會在兩者之間注銷並登錄到其他PE。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM