在開發需求中會遇到這樣一種情況,併發請求。資料庫的更新還沒執行結束,另乙個select查出的資料,會是更新之前的資料,那就會造成查詢資料不準確。
那怎麼解決呢?用innodb的事務和鎖就能解決這個問題。在我們當前行更新還沒結束的時候,select查詢此行的資料會被鎖起來。
比如我們資料庫有這樣兩行資料
我們把id=1的num資料更新為1000,sleep10秒,這時候我們select id=1的資料時,會等待update的更新結束,如果我們select id=2的時候,不需要等待10秒,會立馬獲取到資料。
這就是innodb的行鎖,只會鎖當前update的那行資料,不會鎖整表。
下面會列出測試**,記得吧引擎改為innodb,不是myisam。
class index extends controller
catch (\exception $exception)
}public function index2()catch (\exception $exception)}}
測試步驟:請求index後,在請求index2,就會看到index2會等index載入結束,我們才能看到index2的列印結果。如果index2的id改為2後,則不會受到index的影響 sql server行級鎖,排它鎖,共享鎖的使用
鎖的概述 一.為什麼要引入鎖 多個使用者同時對資料庫的併發操作時會帶來以下資料不一致的問題 丟失更新 a,b兩個使用者讀同一資料並進行修改,其中乙個使用者的修改結果破壞了另乙個修改的結果,比如訂票系統 髒讀 a使用者修改了資料,隨後b使用者又讀出該資料,但a使用者因為某些原因取消了對資料的修改,資料...
位址使能鎖存訊號ALE
在平時,ale端以不變的頻率週期輸出正脈衝訊號,此頻率為振盪器頻率的1 6。因此它可用作對外部輸出的脈衝或用於定時目的。然而要注意的是 每當用作外部資料儲存器時,將跳過乙個ale脈衝。如想禁止ale的輸出可在sfr8eh位址上置0。此時,ale只有在執行movx,movc指令是ale才起作用。另外,...
鎖 mysql Mysql的鎖(S鎖和X鎖的區別)
共享鎖和排它鎖 mysql的鎖系統 shared lock 和 exclusive lock 共享鎖和排它鎖,也叫讀鎖和寫鎖,即read lock和write lock 讀鎖是共享的,或者說是相互不阻塞的 寫鎖是排他的,乙個寫鎖會阻塞其他的寫鎖和讀鎖 在實際的資料庫系統中,每時每刻都發生鎖定,當某個...