我的问题是:假设进程A有一个mysql客户端并启动一个事务。在process-A提交或回滚之前,会导致OOM或net-wire被某人掐断。 mysql服务器会如何处理(在上述两种情况下)?
我知道innodb引擎上的默认事务超时是50秒,并且mysql客户端这里有一个连接池。我猜连接池有自己的心跳,如果没有收到心跳,mysql服务器会认为客户端已关闭。
你能告诉我,到底会发生什么并给出引用吗?版本是10.1.29-MariaDB-6ubuntu2 Ubuntu 18.10
谢谢。 :)
最佳答案
让我自己来回答这个问题。看看net_read_timeout ,默认有30秒时间,服务器认为客户端关闭,并取消交易。对我来说,通过使用 go-sql-driver,建议setup this variable如果需要自定义,则打开数据库客户端时。
我仍然不知道服务器-客户端协议(protocol)的细节,是否有心跳或只是TCP保持事件?等待更多的潜水。
关于崩溃时mysql事务超时和连接心跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57504465/