社区版ob4.2.1.2中auto_increment_cache_size参数出发的条件是什么

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】社区版ob4.2.1.2
【 使用版本 】社区版ob4.2.1.2
【问题描述】社区版ob4.2.1.2中auto_increment_cache_size参数出发的条件是什么,有时候会发现id值自动跳转,跳变量是一百万,设置为1可以解决这个现象吗
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

1 个赞

根据您的问题,您提到的是 auto_increment_cache_size 参数及其与 ID 跳跃现象的关系。首先,auto_increment_cache_size 参数用于控制自动增长 ID 缓存的大小。当数据库表中定义了 AUTO_INCREMENT 字段时,这个参数决定了数据库预先分配并缓存多少个连续的 ID 值。如果缓存中的 ID 被用完,数据库将会请求新的 ID 范围来填充缓存。ID 值跳跃可能是因为在事务中请求了新的 ID 范围,但事务最终被回滚,导致这部分 ID 范围未被使用,从而造成了 ID 的跳跃。

然而,您提到的 auto_increment_cache_size 并不在提供的配置项列表中,这表明它可能是另一个需要关注的参数。设置 auto_increment_cache_size 为 1 可以确保每次只预分配一个 ID,理论上可以减少 ID 跳跃的可能性,但这也会增加数据库请求新 ID 范围的频率,可能导致性能下降。

针对您所描述的问题,似乎更偏向于配置和性能优化方面,而不是具体的故障诊断场景。因此,直接使用 obdiag 进行日志采集或根因分析可能并不适用。不过,如果您希望进一步了解当前集群的状态或检查是否有其他潜在问题,您可以考虑采集集群的基础信息。

日志采集场景: 集群基础信息
日志采集命令: obdiag gather scene run --scene=observer.base

为了更好地帮助您解决 ID 跳跃的问题,请提供以下信息:

  1. 您是否观察到了具体的错误信息或警告?
  2. 当前 auto_increment_cache_size 的设置是多少?
  3. 您的应用程序是否经常进行大量的并发写入操作?
  4. 是否有事务回滚的情况发生?
  5. 您是否已经尝试过调整 auto_increment_cache_size 的值?效果如何?

通过以上信息,我们可以更准确地判断问题的原因,并给出针对性的建议。

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

  1. 内存相关参数

附上敏捷诊断工具 obdiag 使用帮助链接

auto_increment_cache_size 默认值就是1000000,这个参数决定了自增ID跳变的间隔值
至于自增ID跳变的原因是因为请求发送到不同的节点上了,所以才会跳变

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001052212