tidb如何实现自增主键冲突检测问题的

我的问题:

  1. 我需要在tidb的go客户端中调用类似client-java的rawPutIfAbsent的接口, 但是目前api并没有提供此接口.
    我如果做get然后put这样类似的操作就无法保证原子问题

我想了解:

  1. tidb如何实现自增主键冲突检测问题的

使用时请注意关于自增的描述,再多节点集群下,只保证唯一,不保证自增和连续。
https://docs.pingcap.com/zh/tidb/stable/sql-faq#tidb-中为什么出现后插入数据的自增-id-反而小

我要的就是唯一, 原子性

也就是说, 你们目前也保证不了原子性唯一的问题(如果不批量分配的话)

能保证唯一

如果主键不是id, 那怎么解决这个问题

主键、唯一索引、时间戳,这些都能在一定程度上解决吧

主键的作用就是保证唯一性, 如果我用uuid做主键, 那tidb是不是就没办法去重了. 冲突时如何处理

是的,我这边是不建议用uuid做主键的。规避的话,一般是在业务上规避。

请问在多节点集群下, 如何让自增主键唯一且是递增的(可以不连续,但是多个实例写数据, 主键必须是单调递增的)?
非常感谢~

这个目前保证不了,多节点集群下,只能保证唯一,不能保证自增和连续。
我们这边的实践是在应用层处理,使用redis缓存自增主键,插入数据库时从redis取主键并将缓存值加一,通过redis锁保证读写唯一。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。