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
了吗?