mysql 樂觀判斷 校驗

2022-05-11 03:01:53 字數 383 閱讀 8155

說下場景, 使用者賬戶 有 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.使...