資料庫系統本身的鎖機制
1、共享鎖(shared lock) select這種
2、更新鎖(update lock) update 這種
3、排他鎖(exclusive lock):update set xx=c where id="3" 這種
4、意向鎖(intent lock):對錶進行加鎖。
5、模式鎖(schema lock):altert table
6、批量更新鎖(bulk update lock):資料庫備份恢復
業務級別上的鎖機制,如hibernated的鎖機制:
悲觀鎖:利用資料庫本身的鎖機制實現。通過上面對資料庫鎖的了解,可以根據具體業務情況綜合使用事務隔離級別與合理的手工指定鎖的方式比如降低鎖的粒度等減少併發等待。
樂觀鎖:利用程式處理併發。原理都比較好理解,基本一看即懂。方式大概有以下3種
對記錄加版本號.
對記錄加時間戳.
對將要更新的資料進行提前讀取、事後對比。
不論是資料庫系統本身的鎖機制,還是樂觀鎖這種業務資料級別上的鎖機制,本質上都是對狀態位的讀、寫、判斷。
下表是鎖的相容或衝突情形。
現有 s u x
請求s y y n
u y n n
x n n n
現有
sux申請
syyn
uynn
xnnn
oracle:
資料庫鎖 樂觀鎖 悲觀鎖理解
參考 mysql innodb中,樂觀鎖 悲觀鎖 共享鎖 排它鎖 行鎖 表鎖 死鎖概念的理解 樂觀鎖最簡單的實現就是在表中加乙個版本號欄位如version,每次新增設定為1,更新的時候檢查版本號是否一致,如果不一致就更新失敗。版本一致才能更新,然後將版本號 1。首先資料庫需要關閉自動提交功能,或者說...
資料庫中樂觀鎖和悲觀鎖的理解
鎖 locking 業務邏輯的實現過程中,往往需要保證資料訪問的排他性。如在金融系統的日終結算 處理中,我們希望針對某個 cut off 時間點的資料進行處理,而不希望在結算進行過程中 可能是幾秒種,也可能是幾個小時 資料再發生變化。此時,我們就需要通過一些機 制來保證這些資料在某個操作過程中不會被...
深入理解資料庫鎖
oracle中分為兩種模式的鎖,一種是排他鎖 x鎖 另一種是共享所 s鎖 鎖是實現併發的主要手段,在資料庫中應用頻繁,但很多都由資料庫自動管理,當事務提交後會自動釋放鎖.oracle為了使資料庫實現高度併發訪問,它使用了不同型別的鎖來管理併發會話對資料物件的操作.oracle的鎖按作用物件不同分為如...