自增列的值会重复吗?

建表时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 个赞

@ob社区小助手

1 个赞

@论坛小助手

当设置 AUTO_INCREMENT_MODE=NOORDER 时,自增列的值在全球范围内是唯一的,但不是全局递增。这意味着每个 OBServer 节点上的自增值只在节点内部局部递增,而不是全局递增。因此,即使两个会话设置了相同的 auto_increment_incrementauto_increment_offset,它们插入的数据也不会重复,因为每个 OBServer 节点会从内部表中申请自增区间并记录到本地缓存中,确保自增值的全局唯一性。

具体信息可参考以下文档:

  1. default_auto_increment_mode
  2. OceanBase 数据库在 MySQL 模式租户下的扩展功能
  3. auto_increment_increment
  4. auto_increment_offset
1 个赞

小助手太棒了