本文將介紹使用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類型。