锁冲突严重

【 TiDB 使用环境】生产环境
【 TiDB 版本】6.5.0
【复现路径】无
【遇到的问题:问题现象及影响】
近期发现tidb锁冲突特别严重,影响整个集群性能,但是硬件负载很低,不知道如何解决
【资源配置】
【附件:截图/日志/监控】




这个应该只能从代码逻辑上去优化吧。数据库无能为力。

我想知道,冲突具体是由于哪个对象造成的,怎么排查,我查看tidb server节点日志的时候发现,当延迟增加的时候,日志报tikv相应慢,但是kv节点日志级别是error,并没有任何报错,现在我跟研发反馈这个问题,研发反馈没有任何造成锁冲突的可能性

那你要根据tikv的锁日志去判断了,里面会有具体的数据行,找到对应冲突,跟开发battle,
大部分的锁都是业务设计不合理导致。

还是得在业务设计侧去避免发生锁竞争,官方文档有锁排查的流程,可以参考下

我先在线把kv的日志级别开到info级别,然后再找冲突的行

https://docs.pingcap.com/zh/tidb/stable/troubleshoot-lock-conflicts#tidb-锁冲突问题处理
可以根据系统表先排查一下看看

检查下TIDB-server日志 看看是否存在9007([kv:9007]Write conflict),这个能够证明 是写写冲突的

1277这个表,一个tidb server的日志,一天大概有几千次的Write conflict,之前反馈给研发,研发反馈需要具体的语句,或者具体的行


我怀疑是这个问题造成的





看kv的锁冲突怎么是一个唯一索引的问题呢

INFORMATION_SCHEMA.CLUSTER_TIDB_TRX 这张表可以看锁信息,但是只能看正在执行的锁

只要stat字段是LockWaiting的都存在写写冲突吗

打开资源定位的功能,设定慢于多少秒的都是 slow query,这样子 SQL 会被记录下来,然后你可以慢慢看

如果存在 lock waiting,肯定是 耗时比较长的那种了

https://docs.pingcap.com/zh/tidb/stable/identify-expensive-queries

锁处理相关的参考文档:
https://docs.pingcap.com/zh/tidb/stable/troubleshoot-lock-conflicts#处理悲观锁冲突问题

好的,我试一下,谢谢

我们也有类似问题。请问具体的语句或具体的行,时间怎么找出来呢?

可以参考上面兄弟的操作