我的问题类似于这个问题MySQL在连接丢失/断开连接的事务上回滚,但那是5年前。
如果客户端(如jdbc或其他东西)锁定表中的一行,执行一些语句,然后网络关闭,因此mysql永远不会从客户端接收commit
或rollback
命令,mysql是否支持自动回滚此事务(解锁行)?
我指的是它说If --innodb_rollback_on_timeout is specified, a transaction timeout causes InnoDB to abort and roll back the entire transaction
innodb_rollback_on_timeout
,但是transaction timeout
有多长以及在哪里设置它?
类似问题中接受的答案是使用wait_timeout
,如果wait_timeout
设置为像 10 秒这样的小数字,那么 pool 中的空闲连接(如果使用)需要每 10 秒测试一次连接才能被 mysql 服务器断开连接,成本是否太高? 还是有其他方法(配置将是最好的)来解决我的问题?
实际上没有transaction timeout
的设置,仍然适用wait_timeout
或interactive_timeout
。--innodb_rollback_on_timeout
受影响的是回滚行为(整个事务或交易中的语句)。