本文將為您介紹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特性和適用情境,請參見概述。