1. 程式人生 > 其它 >米聯客-ZYNQ-MZ7X400核心板硬體手冊

米聯客-ZYNQ-MZ7X400核心板硬體手冊

一、樂觀鎖

認為對同一個資料的併發操作,不會造成衝突。在事務要提交更新的時候,才會對資料進行衝突校驗。

第一次讀的時候,獲取到某個欄位值,如版本或時間戳。處理完業務邏輯要開始更新的時候,需要再次檢視這個欄位是不是和第一次一樣。如果一樣就更新,反之拒絕。

可以使用資料版本記錄機制或時間戳實現。

經典應用:共享文件,CAS,MVCC。

特點:併發度高,不會發生死鎖。

二、悲觀鎖

具有強烈的獨佔和排他特性。認為併發操作一定會修改資料。所以在處理資料之前,要先對資料加鎖,直到完成修改才釋放鎖。

比如MySQL預設可重複讀隔離級別,使用悲觀鎖,要先關閉set_autocommit=0的自動提交屬性。

使用lock in share mode 和 for update兩種方式來實現select的讀取鎖。lock in share mode在一個事務要update同一個表單的時候,會很容易造成死鎖。

for update有行鎖和表鎖。

特點:併發度小。

三、總結

悲觀鎖適合寫操作非常多的場景,樂觀鎖適合讀操作非常多的場景。