慢查询问题 txnLockFast_backoff:{num:7, total_time:1.08s}

一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题

【TiDB 使用环境】生产环境
【TiDB 版本】7.5.5
【部署方式】云上部署(腾讯云)
【操作系统/CPU 架构/芯片详情】amd64
【集群数据量】500G
【集群节点数】3tidb 3tikv
【遇到的问题:问题现象及影响】
非常简单的根据id查询select语句耗时1s


看着是出现了读写冲突。要怎么解决呢?


tidb txn mode是悲观事务,我需要配置pessimistic-auto-commit这个参数保证全部走悲观事务吗

看下有没有长事务,终止掉?

pessimistic-auto-commit 一般应该都不开吧。
这个sql用了当前读?

好像默认就是悲观事务模式吧

我理解是读操作不应该被事务阻塞,导致慢查询。就算有大事务,也不应该被阻塞。
我从tidb的文档里面看到貌似是查询走了乐观事务导致的。

是的,4.0版本以上事务模式默认就是悲观事务。
但是如果没有显式开启事务,还是乐观事务。貌似是为了兼容低版本。

感谢老师分享

MVCC 历史数据清理有关. 此时,如果有一个乐观事务 B 来读取这些数据,它可能需要读取极大量的历史版本(MVCC 版本链)。如果版本链过长,TiDB 需要在存储层(TiKV)进行大量的 Next 查找来找到事务 B 可见的那个版本。这会导致单次查询的 I/O 暴增,查询时间呈指数级上升,看起来就像是被阻塞了。

这个问题最终解决方案是啥啊?我也遇到有这种情况,楼主方便告知一下吗?

最终有啥好的解决方案么,分享一下,大家学习学习,谢谢啦

感觉是写入很频繁,检查下长事务,锁