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直接关闭窗口断开连接,客户端2也能直接拿到锁。说明客户端断开时,会自动释放锁。
commit
rollback
那么问题来了,客户端1断开连接后,是自动 rollback
不會。用戶端連線斷開後,會自動釋放鎖。
客戶端1
客戶端2
這時,客戶端2的查詢會卡住。直到客戶端1
commit
或rollback
。但是,如果客戶端1直接關閉視窗斷開連接,客戶端2也能直接拿到鎖。 說明客戶端斷開時,會自動釋放鎖定。commit
或rollback
。但是,如果客户端1直接关闭窗口断开连接,客户端2也能直接拿到锁。说明客户端断开时,会自动释放锁。那么问题来了,客户端1断开连接后,是自动
那麼問題來了,客戶端1斷開連線後,是自動rollback
rollback
了嗎? 🎜