[FAQ] Write conflict,metaKey=true 业务侧指定自增主键值,导致写冲突严重 insert 耗时长

[问题澄清]
查看日志有大量写冲突日志,如下图:

[问题原因]

  1. 查看建表语句,主键是自增主键,但是业务侧指定了主键值
    id bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘主键ID’,
  2. auto_increment 的 id 的分配需要各个 tidb 节点按批去预先获取 id 区间,但是如果给定 id 的话,可能会导致这个预先获取到的 id 区间迅速失效(譬如说,预先获取的区间是 [30000, 60000],然后插入 id 为 60001,则这个区间失效,需要重新获取区间),然后多台 tidb 在获取这个 id 区间的时候导致写入冲突,所以并不是某一句具体的 sql 导致的冲突,而是这些插入一起导致的

[解决方案]
业务侧不指定主键值,调整后写冲突消失,insert耗时正常