首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库自增列特性介绍
更新时间:2023-11-14 03:16
本文主要介绍 OceanBase 数据库自增列的特性。
在 OceanBase 数据库中,自增列的特性如下:
自增列不保证连续性,以下操作会导致自增列值出现跳跃:
事务失败
切换主副本
宕机重启
自增 cache 失效
说明
向自增列插入比当前值更大的值,会导致缓存失效。例如,当前自增列上缓存的最大值为 100,如果手动向该列插入 200,则该列的下一个值会从 201 开始,出现跳跃。
自增列在一个分区内具有单调性,而同一个表的不同分区之间不能保证单调性。
OceanBase 数据库是分布式数据库,会预分配和字段类型关联的序列号。
对于 OceanBase 数据库 V2.0 之前的版本,bigint 类型预分配数量为1 亿;对于 OceanBase 数据库 V2.0 及以后的版本,bigint 类型预分配数量为 100 万。
int 类型预分配数量为100 万。
smallint、tinyint 预分配数量小于 100 万,但这两个类型使用很少。
例如,自增列的预分配数量为 100 万,当这 100 万耗尽后,会重新取下一段缓存,依旧是取 100 万条,但是起点不一定是 1000001。对于分区表,OceanBase 数据库的分布式架构会使得自增序列散列在不同的物理机上,并且会有多个进程来获取。
与 MySQL 数据库相同,可以控制自增列步长与初值。相关参数有:
auto_increment_increment:用于设置自增步长。auto_increment_offset:用于确定自增列值的起点。更多配置项的说明信息请参见 《OceanBase 数据库参考指南(MySQL 模式)》中的系统配置项章节。
不推荐显式指定自增值的插入。