我在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,这样就没办法保障自增的了吧?