【 TiDB 使用环境】测试/ Poc
【 TiDB 版本】7.5
tikv中的pessimistic-txn.wait-for-lock-timeout和tidb中的innodb_lock_wait_timeout有啥区别呢?
wait-for-lock-timeout
- 悲观事务在 TiKV 中等待其他事务释放锁的最长时间。若超时则会返回错误给 TiDB 并由 TiDB 重试加锁,语句最长等锁时间由
innodb_lock_wait_timeout
控制。 - 默认值:1s
- 最小值:1ms
是说先由wait-for-lock-timeout参数控制锁超时,如果锁超时后,在由innodb_lock_wait_timeout参数来控制等锁时间,是这样理解不
从tidb的体系架构进行理解,一个是tikv server的控制参数,一个是tidb server SQL层的控制参数
你在tidb-server执行语句,例如要锁1行,这时下推到tikv,开始等待加锁,如果行上已经有锁,则等待 wait-for-lock-timeout
时间,时间内锁释放,则加锁,超过时间锁还存在无法获取到锁,回退到tidb-server,tidb-server判断是否超过innodb_lock_wait_timeout,如超过,直接报错mysql 1205 ,如果还在时间内,继续下推到tikv重新等待加锁,如此反复。
可以这样理解,tidb-server加锁时如未获得锁会反复下推个tikv,每次tikv的等待时间由wait-for-lock-timeout
控制,但是tidb-server这个sql的整个等待时间由innodb_lock_wait_timeout控制
1 个赞
明白了,谢谢
官网应该有这个的介绍
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。