本文將為您介紹PolarDB-X中自增列的相關概念和原理。
概念
PolarDB-X支持通過關鍵字AUTO_INCREMENT
為列設置自增屬性,能夠自動為列填充全局唯一值。
- 當
INSERT
語句沒有包含自增列,或者為自增列指定的值是0或NULL時,PolarDB-X會自動為該列分配一個全局唯一的值; - 當
INSERT
語句顯式為自增列插入值時,PolarDB-X會使用指定的顯式值,并自動跟隨插入的顯式值,使后續自動填充的值大于已插入的顯式值; - 在AUTO模式數據庫中,默認的自增列行為,在各方面(唯一性、單調性、連續性等)與MySQL已經一致。
說明 關于AUTO模式數據庫與DRDS模式數據庫的介紹,請參見AUTO模式數據庫與DRDS模式數據庫。
原理
在PolarDB-X中,如果創建表時通過AUTO_INCREMENT
指定了自增列,為了保證自增列的全局唯一性,則自動為該表創建并關聯一個Sequence對象,在插入數據時使用關聯的Sequence對象分配全局唯一值并進行自動填充。
根據數據庫模式的不同,PolarDB-X在創建表時自動關聯了不同的默認Sequence類型:
- 在AUTO模式庫中,默認關聯的是New Sequence,具備以下特性:
- 唯一性:保證全局唯一;
- 單調性:保證全局單調遞增;
- 連續性:保證全局連續(沒有異常報錯或者實例重啟等情況下);
- 兼容性:與MySQL自增列的特性很好地兼容。
- 在DRDS模式庫中,默認關聯的是Group Sequence,具備以下特性:
- 唯一性:保證全局唯一;
- 單調性:在計算節點內部保證單調遞增,不保證全局單調遞增;
- 連續性:在連接計算節點的會話和緩存區間范圍內,保證連續(沒有異常報錯或者實例重啟等情況下);
- 兼容性:與MySQL自增列的唯一性兼容,其它特性與MySQL有所差異。
可以根據實際需求自定義想要關聯的Sequence類型,具體方法請參見關聯Sequence,不同類型的Sequence特性和適用場景,請參見概述。