MySQL悲觀鎖和樂觀鎖的區別是什么
區別如下:
1、概念不同
樂觀鎖( Optimistic Locking):
顧名思義,對加鎖持有一種樂觀的態度,即先進行業務操作,不到最后一步不進行加鎖,"樂觀"的認為加鎖一定會成功的,在最后一步更新數據的時候再進行加鎖。
悲觀鎖(Pessimistic Lock):
正如其名字一樣,悲觀鎖對數據加鎖持有一種悲觀的態度。因此,在整個數據處理過程中,將數據處于鎖定狀態。悲觀鎖的實現,往往依靠數據庫提供的鎖機制(也只有數據庫層提供的鎖機制才能真正保證數據訪問的排他性,否則,即使在本系統中實現了加鎖機制,也無法保證外部系統不會修改數據)。
推薦:MySQL教程
2、實現方式不同
樂觀鎖:
version方式:一般是在數據表中加上一個數據版本號version字段,表示數據被修改的次數,當數據被修改時,version值會加一。當線程A要更新數據值時,在讀取數據的同時也會讀取version值,在提交更新時,若剛才讀取到的version值為當前數據庫中的version值相等時才更新,否則重試更新操作,直到更新成功。
悲觀鎖:
是由數據庫自己實現的,要用的時候,我們直接調用數據庫的相關語句就可以了(原理:共享資源每次只給一個線程使用,其它線程阻塞,用完后再把資源轉讓給其它線程),如行鎖、讀鎖和寫鎖等,都是在操作之前加鎖,在Java中,synchronized的思想也是悲觀鎖。
3、使用場景不同
樂觀鎖:
比較適合讀取操作比較頻繁的場景,如果出現大量的寫入操作,數據發生沖突的可能性就會增大,為了保證數據的一致性,應用層需要不斷的重新獲取數據,這樣會增加大量的查詢操作,降低了系統的吞吐量。
悲觀鎖:
比較適合寫入操作比較頻繁的場景,如果出現大量的讀取操作,每次讀取的時候都會進行加鎖,這樣會增加大量的鎖的開銷,降低了系統的吞吐量。
4、特點不同
樂觀鎖:
樂觀鎖的特點先進行業務操作,不到萬不得已不去拿鎖。即“樂觀”的認為拿鎖多半是會成功的,因此在進行完業務操作需要實際更新數據的最后一步再去拿一下鎖就好。
悲觀鎖:
悲觀鎖的特點是先獲取鎖,再進行業務操作,即“悲觀”的認為獲取鎖是非常有可能失敗的,因此要先確保獲取鎖成功再進行業務操作。通常所說的“一鎖二查三更新”即指的是使用悲觀鎖。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
據路透社報道,當地時間周日,政治辦公室發言人·納伊姆宣布阿富汗戰爭已經結束,并呼吁與國際社會保持和平關系??刂瓢⒏缓箍偨y府納伊姆在接受半島電視臺采訪時說,不想孤立地生活,阿富汗新政權的類型和形式將很快得到澄清。他還補充說,根據伊斯蘭法律尊重婦女和少數民族的權利和言論自由。納伊姆說,希望與其他國家建立和平關系,并熱衷于發展與外國已經建立的各種溝通渠道。他說:“我們要求所有國家和實體與我們合作解決任何...
創業板鑫東財配資買漲不買跌怎么回事?大多數股民選擇離開A股市場,是因為股市并不具備賺錢效應,更是在保護投資者的利益中不斷的讓股民們流淚,導致進入股市中90%的投資者都是虧損。而散戶是證券市場不可分割的部分,占了80%的體量,卻也是股市受傷最大的群體,在交易制度中受到了限制,在風險對沖中對于股指期貨和融券卻設了50萬門檻,更是在外圍股市走出十年長牛時,只能做多的市場卻是長期的走熊,本想賺點利潤改善生...
近日,央行、銀保監會、外匯局等三部門分別開會,釋放股債匯房重磅信息。其中,央行、外匯局在會上提出,加強部門協作,維護股市、債市、樓市健康發展。下面,我們一起來具體了解一下吧。在促進經濟高質量發展方面,央行、外匯局會上要求,加強部門協作,維護股市、債市、樓市健康發展。在堅持全心全意為人民服務方面,央行、外匯局表示,強化對重點領域、薄弱環節和受疫情影響行業、群體的支持,抓好已出臺政策落地見效,研究出臺...