MYSQL事務 SELECT會自動加鎖嗎
mysql事務 select會自動加鎖嗎?
總結:mysql事務select 只是進行了隔離,保證數據的一致性,并沒有加鎖,如果要加鎖可以用for update。
驗證下:
新建一張表user 添加兩個字段,id,name,隨便添加幾條數據。
打開一個mysql會話(窗口1)
執(zhí)行如下語句
begin;
select * from user where id=1;
新開窗口2執(zhí)行更新操作
update user set name='rain' where id=1;
可以成功更新但是窗口1中的事務讀取到的還是以前的數據,從而說明第一個窗口的事務里的select并沒有鎖,但是具有隔離性并沒有讀取到窗口2里面更新后的數據。
下面回到第一個窗口1將select語句鎖住
select * from user where id=1 for update;
再回到窗口2進行更新操作,發(fā)現導致了mysql阻塞,更新失敗,從而說明窗口1的select被鎖住。
當窗口1的事務提交后,窗口2的update執(zhí)行成功。

評論
圖片
表情
