箱子NvN
(邓邓)
1
【 TiDB 使用环境】自己的虚拟机
【 TiDB 版本】v6.0.0
【遇到的问题】
set global auto_increment_increment 短暂失效
MySQL [test]> create table t1 (a int not null primary key auto_increment);
Query OK, 0 rows affected (0.13 sec)
突然出现global 未生效的情况
查看后好用
再退出重连好用
重复这个操作依然会有global 未生效的情况
再次插入就生效了
箱子NvN
(邓邓)
2
如果修改global 直接退出重连
设置global 之后要插入一下 再退出重进之后插入会遇到
啦啦啦啦啦
4
TiDB 能保证自增值的单调性,但并不能保证其连续性。示例图比较混乱没太看明白,最好能用文字版的命令说明,global重连未生效是指设置完退出重连后查询show variables like 未生效?
箱子NvN
(邓邓)
5
我简单说明一下
设置完global 之后 当前不生效这个是正常的 但是发生了退出重连global 未生效的现象
如图
第一步我查看
此时能看到还是2个2个的增加的 这是正常的 (会出现3 5 7 是因为我之前设置了session 级别的auto_increment_increment =2)
第二步 我设置了global auto_increment_increment =3 让自增主键3个3个增加
第三步 插入 查看 此时global 未生效 正常的 增加了两个 5 7 9
当我exit 再重新连接进来
第四步再插入 再查询时 正常情况应该是 5 7 9 12 但是图中是5 7 9 10
出现这个现象我很疑惑 当我查询时也能看到auto_increment_increment =3 是正确的
再插入查询时 5 7 9 10 13 这期间没有做任何其他操作
并且这个现象还可以还原出啦并非一次偶然
这个是符合预期的,而且和MySQL中行为是一致的。自增值不仅与auto_increment_increment有关,还与auto_increment_offset有关,后者默认值是1。auto_increment的输出始终满足如下公式:
auto_increment_offset + N × auto_increment_increment (N为自然数,例如1、2、3等等)
一开始你设置的auto_increment_increment为2,所以auto_increment的输出稳定为1、3、5、7、9等等,当你修改auto_increment_increment为3时,比9大并且满足上述公式的下一个值就是10,所以是10、13、16等等
1 个赞
啦啦啦啦啦
7
对的 ,需要满足(ID - auto_increment_offset) % auto_increment_increment == 0
这里9后面是10满足(10 - 1)% 3 == 0
参考下这里
https://docs.pingcap.com/zh/tidb/stable/auto-increment#自增步长和偏移量设置
1 个赞
system
(system)
关闭
10
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。