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