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