84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
mysql for update 锁住了一条或多条数据,或者是整个表 如果事务一直没有提交(比如服务器挂掉了)会不会这表数据一直锁在那里
业精于勤,荒于嬉;行成于思,毁于随。
不会。客户端连接断开后,会自动释放锁。
客户端1
set AUTOCOMMIT = 0; BEGIN; SELECT * FROM articles WHERE id=1 FOR UPDATE ;
客户端2
这时,客户端2的查询会卡住。直到客户端1 commit 或 rollback 。但是,如果客户端1直接关闭窗口断开连接,客户端2也能直接拿到锁。说明客户端断开时,会自动释放锁。
commit
rollback
那么问题来了,客户端1断开连接后,是自动 rollback 了吗?
不会。客户端连接断开后,会自动释放锁。
客户端1
客户端2
这时,客户端2的查询会卡住。直到客户端1
commit
或rollback
。但是,如果客户端1直接关闭窗口断开连接,客户端2也能直接拿到锁。说明客户端断开时,会自动释放锁。那么问题来了,客户端1断开连接后,是自动
rollback
了吗?