數(shù)據(jù)庫鎖處理并發(fā)

前言:由于一些原因簡書已經(jīng)一年多沒有更新,最近開始會重新維護起來汁果,后續(xù)會分享一些自己沉淀的東西泌神!

一、樂觀鎖

常用實現(xiàn)樂觀鎖方式:

1毅弧、表里面添加version字段(默認1),在更新的時候同時添加version校驗当窗,如:
    update XXX set XXX,version=version + 1 where version = 原version(入?yún)魅?

這個用法會用在前端配置防止并發(fā)以及重置够坐,切記在更新的時候該version需要從前端帶到后端,這種方式有些局限性,version字段沒有實際的語義

2崖面、表里面添加狀態(tài)字段元咙,來作為前置狀態(tài)校驗,比如訂單表中支付成功需要將已創(chuàng)建待支付的訂單更新為已支付
update XXX set status = 'PAID' where status = 'UNPAID'

這個用法使用很廣如在訂單中心或者一些中臺業(yè)務系統(tǒng)

不常用的實現(xiàn)樂觀鎖方式:

3巫员、實現(xiàn)方式跟第一點類似庶香,因為我們表里面經(jīng)常會有更新時間gmt_modified字段,該字段可以設置為TIMESTAMP(3)(精確到1ms)

這種的像更新訂單表里面的某幾個字段可能不好用第二種情況狀態(tài)機來控制简识,用時間戳來作為樂觀鎖也是一種很好的方式

  update XXX set attribute = XXX where gmt_modified = XXX

二赶掖、悲觀鎖

悲觀鎖不要輕易使用,能不用的就不要使用七扰,因為悲觀鎖是獨占鎖奢赂,其余任務更新被鎖住的數(shù)據(jù)會等待。使用方式:

select * from XXX where id=1 for update

有個點必須注意颈走,因為默認情況下數(shù)據(jù)庫更新操作都是自動提交的膳灶,所以在應用層使用悲觀鎖的時候應該放在事物中
有個典型的需要使用悲觀鎖的場景,比如一個主訂單下面有2個子訂單,當子訂單都被取消的時候需要將主訂單的狀態(tài)推成取消轧钓。兩個子訂單同時在兩個不同的請求調(diào)用中被取消序厉,這個時候需要使用悲觀鎖鎖住先鎖主主訂單防止并發(fā),最終當兩個子單都被取消的時候主訂單狀態(tài)被推成取消

三毕箍、數(shù)據(jù)庫鎖應用暢想

數(shù)據(jù)庫鎖是一種相對比較簡單的防止并發(fā)的有效方案弛房,在一些通過定時任務來調(diào)度的任務,當需要同時執(zhí)行 n個定時任務的時候霉晕,為了處理并發(fā)這個時候采用樂觀鎖中第2條通過明確的狀態(tài)機搶占到數(shù)據(jù)再去處理庭再,這樣就能做到同一個單據(jù)被重復撈取。如上就是一些比較基本的手段牺堰,掌握好就可以通過不同的場景交叉使用拄轻。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市伟葫,隨后出現(xiàn)的幾起案子恨搓,更是在濱河造成了極大的恐慌,老刑警劉巖筏养,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斧抱,死亡現(xiàn)場離奇詭異,居然都是意外死亡渐溶,警方通過查閱死者的電腦和手機辉浦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茎辐,“玉大人宪郊,你說我怎么就攤上這事⊥下剑” “怎么了弛槐?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長依啰。 經(jīng)常有香客問我乎串,道長,這世上最難降的妖魔是什么速警? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任叹誉,我火速辦了婚禮,結(jié)果婚禮上闷旧,老公的妹妹穿的比我還像新娘长豁。我一直安慰自己,他們只是感情好鸠匀,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逾柿,像睡著了一般缀棍。 火紅的嫁衣襯著肌膚如雪宅此。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天爬范,我揣著相機與錄音父腕,去河邊找鬼。 笑死青瀑,一個胖子當著我的面吹牛璧亮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播斥难,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼枝嘶,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了哑诊?” 一聲冷哼從身側(cè)響起群扶,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎镀裤,沒想到半個月后竞阐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡暑劝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年骆莹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片担猛。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡幕垦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出毁习,到底是詐尸還是另有隱情智嚷,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布纺且,位于F島的核電站盏道,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏载碌。R本人自食惡果不足惜猜嘱,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望嫁艇。 院中可真熱鬧朗伶,春花似錦、人聲如沸步咪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至点晴,卻和暖如春感凤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背粒督。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工陪竿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人屠橄。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓族跛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親锐墙。 傳聞我的和親對象是個殘疾皇子礁哄,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355