添加維護字段方案的疑問
你說的CAS的情況,先比較,在更新,說是需要一個維護字段(比如token)。也就是更新的時候 where 條件添加上剛才的查詢中一下這個字段是不剛才查詢到的.(where id= selectID & token=$res['token'])。是這樣的嗎?同時更新的時候把這個 token 也更新下。這種方案我還很少見。請問這種方案也是很常用的嗎?謝謝
你說的CAS的情況,先比較,在更新,說是需要一個維護字段(比如token)。也就是更新的時候 where 條件添加上剛才的查詢中一下這個字段是不剛才查詢到的.(where id= selectID & token=$res['token'])。是這樣的嗎?同時更新的時候把這個 token 也更新下。這種方案我還很少見。請問這種方案也是很常用的嗎?謝謝
2019-03-03
舉報
2019-03-04
@Q646448149?您好!這個案例中關鍵的邏輯是對數(shù)據(jù)版本字段的維護和使用數(shù)據(jù)版本字段進行CAS。
第一個問題:通過在where條件中添加數(shù)據(jù)版本字段的驗證,來確定要更新的數(shù)據(jù)是最新的才能被修改;如果已經(jīng)被修改,數(shù)據(jù)版本就會被更新,那么當前更新就要被更新失敗。
第二個問題:這種方案不通用,但在很多場景中來代替鎖,簡單說就是避免使用鎖來優(yōu)化性能。