本文將介紹使用Sequence過程中的注意事項及問題處理的方法。
New Sequence
- New Sequence僅支持在5.4.14及以上版本的AUTO模式數據庫中使用;
- New Sequence的自定義步長、限定最大值和循環分配特性,僅在5.4.17及以上版本支持;
- 如果已經創建過New Sequence,但要降級到不支持New Sequence的版本上,則必須在降級前將所有New Sequence轉換成Group Sequence,轉換方法如下:
- 通過INFORMATION_SCHEMA.SEQUENCES視圖查詢實例范圍內是否存在New Sequence;
- 若New Sequence存在,使用轉換語句
CONVERT ALL SEQUENCES FROM NEW TO GROUP
將實例下的所有New Sequence轉換為Group Sequence,詳情請參見CONVERT SEQUENCES。
- New Sequence中使用GMS對AUTO_INCREMENT的值進行分配,為保證性能,需要在GMS內緩存一段值。如果GMS發生版本升級、主備切換、變配、遷移等操作,那么操作前內存中緩存的值會被丟棄,造成值的跳躍。
Group Sequence
- 5.4.13及以下版本,5.4.14及以上版本的DRDS模式數據庫中,默認使用Group Sequence;
- Group Sequence的值從100001開始分配,即起始值(可分配的最小值)為100001;
- 單元化Group Sequence不支持作為源或目標的類型轉換,也不支持修改起始值以外的參數;
- 屬于同一個全局唯一數字序列分配空間的每個單元化Group Sequence ,必須指定相同的單元數量和不同的單元索引,以保證跨實例或跨庫的全局唯一性。
- 不建議使用建表時自動關聯的、以
AUTO_SEQ_
為前綴的Group Sequence單獨獲取NEXTVAL,并使用獲取的值通過INSERT
顯式插入該表中,這樣做可能使該Group Sequence頻繁刷新緩存區間,導致值增長過快。
Time-based Sequence
將Time-based Sequence用于表中自增列時,該列必須使用BIGINT類型。