建表时AUTO_INCREMENT_MODE=NOORDER 为全局无序递增。
自增两个session级变量:
auto_increment_increment Session 级变量,用于设置自增步长,取值范围为[1, 65535],默认值为1。
auto_increment_offset Session 级变量,用于确定AUTO_INCREMENT 列值的起点,取值范围为[1, 65535],默认值为1。
如果2个会话,设置相同的auto_increment_increment,auto_increment_offset ,
2个会话都插入数据,数据会重复吗?
1 个赞
论坛小助手
#5
当设置 AUTO_INCREMENT_MODE=NOORDER 时,自增列的值在全球范围内是唯一的,但不是全局递增。这意味着每个 OBServer 节点上的自增值只在节点内部局部递增,而不是全局递增。因此,即使两个会话设置了相同的 auto_increment_increment 和 auto_increment_offset,它们插入的数据也不会重复,因为每个 OBServer 节点会从内部表中申请自增区间并记录到本地缓存中,确保自增值的全局唯一性。
具体信息可参考以下文档:
- default_auto_increment_mode
- OceanBase 数据库在 MySQL 模式租户下的扩展功能
- auto_increment_increment
- auto_increment_offset
1 个赞