【 使用环境 】 测试环境
【 OB or 其他组件 】ob
【 使用版本 】
【问题描述】oceanbase数据库自增id会突然从 个位数 直接变成 六位数
【复现路径】问题出现前后相关操作
【附件及日志】
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
【 使用环境 】 测试环境
【 OB or 其他组件 】ob
【 使用版本 】
【问题描述】oceanbase数据库自增id会突然从 个位数 直接变成 六位数
【复现路径】问题出现前后相关操作
【附件及日志】
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
根据您的描述,您遇到了 OceanBase 数据库自增 ID 突然从个位数跳变至六位数的情况。这可能是由于自增列在某些特定场景下的“跳变”现象导致的,如文档片段 1 和文档片段 2 所述,可能的原因包括但不限于:分区切换、主备切换、合并操作或插入了一个较大的自增数值等。
为了更准确地定位问题原因,建议使用 obdiag 工具进行日志采集,并将采集到的日志提供给我们以便进一步分析。
日志采集场景: 合并问题
日志采集命令: obdiag gather scene run --scene=observer.compaction
请您执行上述命令并将采集到的日志压缩包发送给我们。此外,请您提供一些额外的信息以便我们更好地帮助您:
通过以上信息,我们将能够更准确地定位问题原因并为您提供解决方案。
具体信息可参考以下文档:
附上敏捷诊断工具 obdiag 使用帮助链接
和小助手的回复类似,麻烦提供如下信息
版本是 5.7.25-OceanBase_CE-v4.2.1.8
自增列应该是默认模式
我是用root直接登录的 没有指定租户 单机部署的应该不存在主备切换把,在插入数据的时候 第三条就变成 1000003
根据您提供的信息,您正在使用的是 OceanBase CE v4.2.1.8 版本,并且自增列使用的是默认模式。您提到在单机部署环境中插入数据时,自增 ID 从个位数直接跳变至六位数。结合您提供的版本信息和场景描述,我们可以从以下几个方面进行分析:
INSERT INTO table_name (id) VALUES (1000003);
),那么后续生成的自增 ID 将不会小于这个值。 [2]
考虑到您提到的第三条插入数据时自增 ID 突变为 1000003
,很有可能是因为在这之前有显式插入了一个较大的自增值。为了验证这一点,请检查是否有类似的操作。
auto_increment_cache_size
来减少跳变的可能性。默认情况下,auto_increment_cache_size
的值为 1000000,这意味着每次申请的自增区间长度为 1000000。如果频繁遇到跳变问题,可以适当减小这个值。 [1]
SQL_MODE
未设置为 NO_AUTO_VALUE_ON_ZERO
,否则在插入值为零的列时不会生成自增列。 [2]
auto_increment_cache_size
参数,观察效果。希望以上信息对您有所帮助。如果问题依然存在,请提供更多详细的日志信息以便进一步排查。
更多信息请查看:
(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)
oceanbase自增列这块不是严格递增,为了保证自增性能,这块会缓存一定的自增id,当发生leader切换时,会产生自增的跳变,具体可参照下面这个文档:
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000820754
保证单调自增性,不保证一定是严格顺序自增,leader切换会有存在跳变的可能