Error: KV error safe to retry Txn(Mvcc(TxnLockNotFound

【 TiDB 使用环境】生产环境
【 TiDB 版本】5.7.25-TiDB-v4.0.16
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】今天对表先去掉唯一索引后增加普通索引,对应字段一样,发现这段时间出现如下错误:
Caused by: java.sql.SQLException: Error: KV error safe to retry Txn(Mvcc(TxnLockNotFound { start_ts: TimeStamp(447121564147908611), commit_ts: TimeStamp(447121565655236609)
, key: [116, 128, 0, 0, 0, 0, 0, 6, 99, 95, 105, 128, 0, 0, 0, 0, 0, 0, 1, 1, 100, 101, 52, 50, 53, 99, 50, 52, 255, 97, 52, 101, 56, 100, 57, 55, 100, 255, 52, 55, 56, 52,
54, 97, 51, 99, 255, 100, 48, 97, 53, 100, 53, 98, 98, 255, 0, 0, 0, 0, 0, 0, 0, 0, 247] })) {tableID=1635, indexID=1, indexValues={de425c24a4e8d97d47846a3cd0a5d5bb, }} [t
ry again later]
Tidb是异步加索引,请问是加索引的过程中是否对写数据有影响,或者是其它原因。
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】

https://github.com/pingcap/tidb/issues/26404

It’s needed to improve the logs, only print ERROR logs if the failure keys are not pessimistic type, and the resolve process could continue if the failure key type is pessimistc type.

这个地方的日志输出,后续版本优化过。

https://github.com/pingcap/tidb/issues/14036

也确实有人报告说设置为悲观事务就没有报错了。
我觉得你可以这样试试看。

1 个赞

加索引会上dml锁啊。

加索引会影响对本表的使用,它会产生大量IO

SELECT * FROM mysql.tidb WHERE time_to_sec(timediff(now(), lock_last_update)) > 3600;

加索引肯定影响呀