文章详情页
mysql for update 如果事务一直没有提交会不会这表数据一直锁在那里
浏览:272日期:2022-06-15 08:55:29
问题描述
mysql for update 锁住了一条或多条数据,或者是整个表 如果事务一直没有提交(比如服务器挂掉了)会不会这表数据一直锁在那里
问题解答
回答1:不会。客户端连接断开后,会自动释放锁。
客户端1
set AUTOCOMMIT = 0;BEGIN;SELECT * FROM articles WHERE id=1 FOR UPDATE ;
客户端2
set AUTOCOMMIT = 0;BEGIN;SELECT * FROM articles WHERE id=1 FOR UPDATE ;
这时,客户端2的查询会卡住。直到客户端1 commit 或 rollback 。但是,如果客户端1直接关闭窗口断开连接,客户端2也能直接拿到锁。说明客户端断开时,会自动释放锁。
那么问题来了,客户端1断开连接后,是自动 rollback 了吗?
相关文章:
1. 无法为JSP编译类:无法解析类型java.util.Map $ Entry。从所需的.class文件间接引用它2. vue.js - android环境下在vue中引入vux.js 报错。3. 第6行的$_GET[’F’]没有定义啊?求问一下是什么意思?4. tp5.0|php8.0 在window系统上写定时任务,执行报错5. javascript - js,有几行代码不太明白?6. java - springboot 修改默认静态资源文件读取路径7. javascript - 拿到美工/UI的PSD图,接下来写前端页面的顺序,求指导8. 用python3的smtplib库发邮件一直返回无法发送邮件提示,是什么原因?9. javascript - 怎样优化网页打开速度呢?10. javascript - 一排三个框,各个框的间距是15px,距离外面的白框间距也是15px,这个css怎么写?
排行榜

网公网安备