AUTO_INCREMENT=1000001 并且 AUTO_ID_CACHE=1 主键id会跳号

– 建表语句
CREATE TABLE ieg_operation_promotion_project_sequence_cc (
id int NOT NULL AUTO_INCREMENT COMMENT ‘主键id’,
code varchar(64) DEFAULT NULL COMMENT ‘项目编码’,
PRIMARY KEY (id) /*T![clustered_index] CLUSTERED */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=1000001 /*T![auto_id_cache] AUTO_ID_CACHE=1 */ COMMENT=‘CC’;

创建表后插入带主键数据
INSERT INTO ieg_operation_promotion_project_sequence_cc

(id,code)

VALUES(1000001, ‘D0324001’);

使用dbeaver连接工具创建以及查看
建表后插入正常,第二天查看ddl
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=1008001 /*T![auto_id_cache] AUTO_ID_CACHE=1 */
AUTO_INCREMENT 跳号,并且按照4000缓存递增

需要主键id单调自增连续

聚簇索引只保证自增且唯一,并不保证连续分配。分布式数据库是这样的。
你改成NONCLUSTERED 非聚簇索引试试能不能连续递增。

看看你有几个tidb节点,每个节点会缓存一段来用。如果重启又跳得更大了。

看看这个,对性能会有些影响,跳跃缓存间隔可以设置


https://docs.pingcap.com/zh/tidb/stable/auto-increment#mysql-兼容模式

当然不是 AUTO_ID_CACHE=1肯定是连续分配的,我们用了很多了

现在表里的数据最大的id是多少?后面有实际插入数据吗?