[问题澄清]
查看日志有大量写冲突日志,如下图:
[问题原因]
- 查看建表语句,主键是自增主键,但是业务侧指定了主键值
id
bigint(20) NOT NULL AUTO_INCREMENT COMMENT ‘主键ID’, - auto_increment 的 id 的分配需要各个 tidb 节点按批去预先获取 id 区间,但是如果给定 id 的话,可能会导致这个预先获取到的 id 区间迅速失效(譬如说,预先获取的区间是 [30000, 60000],然后插入 id 为 60001,则这个区间失效,需要重新获取区间),然后多台 tidb 在获取这个 id 区间的时候导致写入冲突,所以并不是某一句具体的 sql 导致的冲突,而是这些插入一起导致的
[解决方案]
业务侧不指定主键值,调整后写冲突消失,insert耗时正常