說下場景, 使用者賬戶 有 100 元錢, 他執行了兩個操作, a操作發紅包發了80塊錢, b操作 發紅包 發了 70 ,併發, 假如沒有 凍結這一說法, 兩個操作都是去 查詢餘額, 還有100 兩個操作都可以進行。
寫法 1 : update t_test set money = money-80;
update t_test set money = money-70 ;
執行後 , 餘額是 -50 元。 這種就有問題。
update t_test set money = money-80;
update t_test set money = money-70 where money =100;
第二條 執行就會失敗, 這就是 樂觀判斷
mysql樂觀鎖實現 mysql樂觀鎖實現
在多使用者環境中,在同一時間可能會有多個使用者更新相同的記錄,這會產生衝突。這就是著名的併發性問題。典型的衝突有 1.丟失更新 乙個事務的更新覆蓋了其它事務的更新結果,就是所謂的更新丟失。例如 使用者a把值從6改為2,使用者b把值從2改為6,則使用者a丟失了他的更新。2.髒讀 當乙個事務讀取其它完成...
mysql 樂觀鎖實現 mysql 樂觀鎖實現
一 為什麼需要鎖 併發控制 在多使用者環境中,在同一時間可能會有多個使用者更新相同的記錄,這會產生衝突。這就是著名的併發性問題。典型的衝突有 1.丟失更新 乙個事務的更新覆蓋了其它事務的更新結果,就是所謂的更新丟失。例如 使用者a把值從6改為2,使用者b把值從2改為6,則使用者a丟失了他的更新。2....
優化mysql樂觀鎖 mysql樂觀鎖總結和實踐
樂觀鎖介紹 樂觀鎖 optimistic locking 相對悲觀鎖而言,樂觀鎖假設認為資料一般情況下不會造成衝突,所以在資料進行提交更新的時候,才會正式對資料的衝突與否進行檢測,如果發現衝突了,則讓返回使用者錯誤的資訊,讓使用者決定如何去做。那麼我們如何實現樂觀鎖呢,一般來說有以下2種方式 1.使...