文章詳情頁
mysql for update 如果事務一直沒有提交會不會這表數據一直鎖在那里
瀏覽:148日期: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. linux - 編譯時提示頭文件#include <mysql/mysql.h>不存在,百度之后也沒解決2. java - yuicompressor-maven-plugin 合并可用卻不壓縮, 哪配置不對?3. javascript - immutable配合react提升性能?4. node.js - webpack --watch以后報錯env: node: No such file or directory5. javascript - nodejs的列表不能往中間插入數據嗎?6. html頁面中怎么將兩個點之間的距離用直線連接起來?7. java - Spring +Mybatis 事務 不能回滾8. node.js - 微信小程序有自己的ws協議,用nodejs的話,還需要nginx干嘛呢9. css3 - 如何出現橫向捲軸?10. JAVA 版本問題?
排行榜
