亞信安慧AntDB:AntDB-M後設資料鎖(五)

亞信AntDB資料庫發表於2024-01-29

IS_DESTROYED: 標識鎖物件將被釋放。

HAS_OBTRUSIVE:標識鎖物件下有obtrusive鎖,新的鎖申請必須進入慢速申請路徑,釋放鎖時,也要先加鎖以保護已授予鎖連結串列。

HAS_SLOW_PATH: 標識鎖物件下是否有unobtrusive鎖。


5.3.2 干擾型(obtrusive)

相互間不相容,對於DML操作不通用。此類鎖的申請過程需要對鎖物件的讀寫鎖加寫鎖,對不同執行緒的鎖申請影響較大,因此顯得比較張揚。

scoped locks:X,S。

per-object locks:SU, SRO, SNW, SNRW, X。


5.4 加鎖路徑

鎖的申請過程分為兩種路徑,1)快路徑, 即只需要增加鎖個數計數來授予鎖; 2)慢路徑,需要對鎖物件讀寫鎖加寫鎖來授予鎖.


5.4.1 快路徑(fast path)

對於unobtrusive鎖,可以透過快速路徑來快速授予鎖。但是授予鎖有個前提,就是該鎖物件下沒有obtrusive鎖,因為unobtrusive與obtrusive之間有些鎖是互斥的,只有在沒有obtrusive鎖存在時,unobtrusive鎖才彼此相容。透過檢測鎖狀態的HAS_OBTRUSIVE位即可快速判斷。透過CAS操作即可更新鎖個數,同時也會檢測是否已有其他執行緒以張揚方式申請了鎖。CAS操作成功,即申請鎖成功。


亞信安慧AntDB:AntDB-M後設資料鎖(五)


來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70026696/viewspace-3005564/,如需轉載,請註明出處,否則將追究法律責任。

相關文章