[英]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.