文章详情页
mysql for update 如果事务一直没有提交会不会这表数据一直锁在那里
浏览:296日期: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. mysql优化 - mysql 分页查询优化。2. javascript - 粘贴一段带有图片和文字的内容,如何使用js实现获取图片并上传到服务器?3. java - 请教一个spring定时任务的问题4. javascript - vue2如何动态生成checkbox默认选中,获取数据5. mysql - ubuntu开启3306端口失败,有什么办法可以解决?6. android-studio - android app微信登录一定要申请了登录权限才能测试?7. 网页爬虫 - 关于Python的编码与解码问题8. javascript - 获取标签中的字符串9. PHP怎么升级?升级会导致老的网站程序不能用吗?10. 一道关于 JavaScript 中 this 的题目的困惑
排行榜

网公网安备