我的问题类似于这个问题MySQL rollback on transaction with lost/disconnected connection,但它是在5年前。
如果客户端(如jdbc或其他东西)在表中锁定一行,执行一些语句然后网络关闭,所以mysql永远不会从客户端收到commit
或rollback
命令,mysql是否支持自动回滚此事务(解锁行)?
我引用innodb_rollback_on_timeout
它说If --innodb_rollback_on_timeout is specified, a transaction timeout causes InnoDB to abort and roll back the entire transaction
,但是transaction timeout
有多长时间以及设置它的位置?
类似问题中接受的答案是使用wait_timeout
,如果wait_timeout
设置为10秒的小数字,那么池中的空闲连接(如果使用)需要每10个测试一次连接它们被mysql服务器断开之前的几秒钟,成本是否过高?还是有其他方法(配置最好)来解决我的问题?
答案 0 :(得分:0)
实际上,transaction timeout
,wait_timeout
或interactive_timeout
仍然没有设置。 --innodb_rollback_on_timeout
影响的是回滚的行为(整个事务或转换中的语句)。