锁冲突

Lock wait timeout exceeded; try restarting transaction

怎么查看锁冲突的具体信息排查问题?

首先确认一下场景有没有锁冲突,有锁冲突当前的现象是正常的

主要通过如下方式确认:1、直接读脚本,看看处理逻辑;2、通过observer的日志协助排查。在日志中过滤 -6005,跟一下对应trace,应该有sql语句能看到,甚至能看到行。然后,再去脚本中看看对应表的处理逻辑。

一般情况来说,报这个错,语义比较明确,就是发生了行锁冲突。在同一行上,一定发生了并发修改(包括lock操作)。

如果预期存在冲突,又不希望向客户端报错,可以尝试调大事务超时时间、语句超时时间,以便底层发生锁冲突以后尽可能长时间重试。

参考文档 OceanBase 社区