tidb自增值的获取

TIDB版本:v4.0.13
因为tidb是无状态的,每张表在不同的tidb节点存在着不同的自增值,想请教下有什么查询可以看到该表在每个节点的当前的自增值么,或者可以查出该表在当前的节点的当前自增值,搜了一圈没有搜索到。
last_insert_id();是指上次插入的值,并不能满足需求
next_row_id():貌似是指下一个区间段获取的值,也不能满足要求

@QBin
大致的探讨如下,希望可以给你定位问题获得更多信息。



1赞
  • 目前 TIDB 没有暴露对应的方法去获取当前 TiDB server 每一个表的缓存的自增长的值。
  • 请问一下这边是什么使用场景需要去获取这个值呢?

哦,好吧。还以为能通过接口只能的能查到,是因为数据是从tidb同步到mysql的,那么自增值都是显式插入,而程序里的是隐式插入,这样就会有主键冲突的问题的,如果能够查询这个值,就能再一定程度上避免这个问题

  • 显式插入是人为手工插入嘛?
  • 以目前 TiDB 的机制,只要有显式插入,就肯定会存在冲突的问题。(在不重新设定 auto_increment 的值,进行 rebase 的情况下),这块正在做相关的优化哈。:smiley:

不是人工插入,但是项目是从mysql同步过来的,dm写入到tidb的时候指定就是显示插入了,现在切到tidb独立运行的时候就有可能触发问题

嗯。这个是已知问题。后面会优化这块。

好的。