多个tidb写入的时候如何保障自增列的自增?

我在tidb4.0简洁文档中看到:

  • TiDB 的自增列仅保证自增且唯一、但不保证自动分配的值的连续性,建议不要将缺省值和自定义值混用,若混用可能会收 Duplicated Error 的错误信息。
  • TiDB 在工程实现上会在每一个 tidb-server 实例上缓存一段 ID 的值用于给表的自增列分配值,缓存 ID 的个数由表的 AUTO_ID_CACHE 确定,默认值:30000,请特别注意:自增列和 _tidb_rowid 都会消耗缓存的 ID,如果 INSERT 语句中所要求的连续的 ID 个数大于 AUTO_ID_CACHE 的值时系统会自动调整 AUTO_ID_CACHE 的值以确保该语句能正常执行。

那么如果我有两个tidb-server,我的自增列还是自增的吗? 根据第二段描述tidb1分配的是0-30000,tidb2分配的是30000-60000,那么如果我第一条数据是通过tidb2写入他的id应该是30000,然后第二条数据通过tidb1写入,他的id只能是0-30000,这样就没办法保障自增的了吧?

这个不用担心,还是自增的,您可以像我这样测试一下,会发现,他的值是会按照顺序排列的。

image

不对,我看图中d的数据是101并不是在30101之后,这个数据是什么时候插入的?

d是最后插入的,我们给您演示,你如果有疑问。能否麻烦您自己测试下?这样可能更有说服力

好吧1

:handshake:

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