文章详情页
mysql for update 如果事务一直没有提交会不会这表数据一直锁在那里
问题描述
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. html - css气泡,实现“倒三角(不知道算不算三角了)”可透明的。2. 关docker hub上有些镜像的tag被标记““This image has vulnerabilities””3. docker - 各位电脑上有多少个容器啊?容器一多,自己都搞混了,咋办呢?4. 列宽好窄,跟老师显示的列宽不一样5. docker不显示端口映射呢?6. docker start -a dockername 老是卡住,什么情况?7. docker api 开发的端口怎么获取?8. docker镜像push报错9. docker网络端口映射,没有方便点的操作方法么?10. java - AtomicInteger等原子类,是不是不用volatile修饰,自带volatile属性?
排行榜