【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
2PC事务过程,对于primary row 如果 prewrite之后一直没有二阶段的commit,在ttl过期前一直是被锁的,会一直阻塞其他的事务?
【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】
2PC事务过程,对于primary row 如果 prewrite之后一直没有二阶段的commit,在ttl过期前一直是被锁的,会一直阻塞其他的事务?
如果是悲观锁的话,需要结合日志查看
如果当时prewrite的节点活着,确实事务太大的话,会一直执行txn_heartbeat延长ttl的。有个check_txn_status,如果这个锁超期了(说明最开始执行prewrite的节点挂了),这个锁就会被其他节点清理掉。
innodb_lock_wait_timeout
变量,设置事务等锁的超时时间(默认值为 50
,单位为秒)。等锁超时后返回兼容 MySQL 的错误码 1205
。如果多个事务同时等待同一个锁释放,会大致按照事务 start ts
顺序获取锁。50s的时间感觉很长啊。如果prewrite的节点挂了,一直没有commit。那需要等50s过期后,锁被清理,其他事务才能执行。
需要看看日志
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。