MySQL模式自增值不连续问题

【 使用环境 】测试环境
【 使用版本 】3.2.3.3
【问题描述】新建表插入数据发现自增主键不连续
【复现路径】截图附上相关操作
新建表查看下一条记录的自增值


插入一条数据,发现自增值变得很大

依照上图的自增值2000002插入,结果自增值翻倍了

想请教下这个情况的原因是什么?

1 个赞

不连续是因为 多机多分区生成自增值,每个分区有自己的缓存值
插入后子增值翻倍,因为显式地向自增表中插入指定值,则后续生成的自增值都不会小于该值
自增翻倍了可以检查这个参数设置的多少:auto_increment_cache_size
可以参考下这个文档,你的问题这里面都有介绍
定义自增列-V4.3.4-OceanBase 数据库文档-分布式数据库使用文档

1 个赞

厉害

1 个赞

这个是预期的,这个现象是分布式的原因,另外即集中式也存在不连续的情况,例如MySQL如下情况也会自增ID不连续

事务回滚,计数器增加
语句报错,计数器增加
自己填充自增值,抬高计数器
参数innodb_autoinc_lock_mode为2的时候(8.0默认),insert select 类似批量导入数据,会导致自增浪费一部分,但是却避免了自增锁

1 个赞

感谢您的解答

感谢您的解答

分布式数据库没法确保连续。
多个observer,没有唯一的发号器,只能各自分配一段连续的吧。
局部连续,全局保证递增但是不保证连续。