樂觀鎖 悲觀鎖 共享鎖和排它鎖的簡單理解

2021-08-08 11:39:10 字數 524 閱讀 8936

個人簡單理解

樂觀鎖(樂觀併發控制)和悲觀鎖(悲觀併發控制)是指資料庫在對待併發上控制的兩種思想,共享鎖和悲觀鎖是具體的鎖的實現,且都屬於悲觀鎖。樂觀鎖沒有加鎖

2.排它鎖(x)(寫鎖):一旦被上上排它鎖(x),該事務可進行讀寫操作,其他事務只能等到該事務釋放了鎖後才能獲取鎖

這兩種鎖都是在進行資料操作是先獲取鎖,因此都是悲觀鎖的範疇

樂觀鎖:獲取資料的時候不用獲取鎖,直到需要更新資料的時候才去檢查獲取的記錄是否已被其他事務更新,如果更新了則返回錯誤拋異常。注意的是,樂觀鎖中沒有鎖機制,通常的實現方式是用版本號或時間戳實現,比如,事務get了一條記錄,同時獲取到了該條記錄的version,如果需要做更新操作,則對version進行+1操作,插入資料庫時就會檢查資料庫當前的version+1是否與插入的version一致,如果一致則插入,否則拋異常,另只有更新操作才對version做+1操作,get不會做

悲觀鎖:獲取資料之前先獲取鎖,再進行操作

具體的專業術語或名詞解釋可自行搜尋,這裡只是我個人比較通俗的解釋。

參考文章:

C 樂觀鎖 悲觀鎖 共享鎖 排它鎖 互斥鎖

悲觀鎖 pessimistic lock 顧名思義,就是很悲觀,每次去拿資料的時候都認為別人會修改,所以每次在拿資料的時候都會上鎖,這樣別人想拿這個資料就會block直到它拿到鎖。傳統的關係型資料庫裡邊就用到了很多這種鎖機制,比如行鎖,表鎖等,讀鎖,寫鎖等,都是在做操作之前先上鎖。通過 jdbc 實...

mysql樂觀鎖 悲觀鎖 共享鎖與排它鎖

樂觀鎖 樂觀併發控制 和悲觀鎖 悲觀併發控制 是指資料庫在對待併發上控制的兩種思想,共享鎖和排它鎖是具體的鎖的實現,且都屬於悲觀鎖。樂觀鎖沒有加鎖 獲取資料的時候不用獲取鎖,直到需要更新資料的時候才去檢查獲取的記錄是否已被其他事務更新,如果更新了則返回錯誤拋異常。注意的是,樂觀鎖中沒有鎖機制,通常的...

樂觀鎖 悲觀鎖 共享鎖以及排它鎖的概念

樂觀併發控制 又名 樂觀鎖 optimistic concurrency control,縮寫 occ 它假設多使用者併發的事務在處理時不會彼此互相影響,各事務能夠在不產生鎖的情況下處理各自影響的那部分資料。在提交資料更新之前,每個事務會先檢查在該事務讀取資料後,有沒有其他事務又修改了該資料。如果其...