1.讀寫鎖
互斥鎖(exclusive),簡寫為x鎖,又稱為寫鎖。
共享鎖(shared),簡寫為s鎖,又稱為讀鎖。
對x鎖和s鎖有兩個規定:
①乙個事務對資料物件a加了x鎖,那麼就可以對a進行讀取和更新。加鎖期間其他事務不能對a加任何形式的鎖。
②乙個事務對資料物件a加了s鎖,可以對a進行讀取操作,但是不能進行更新操作。加鎖期間其他事務能對a加s鎖,但是不能加x鎖。
2.意向鎖
意向鎖在x/s鎖的基礎上引入了ix/is鎖。意向鎖是一種表級鎖,但是它是一種不與行級鎖衝突的表級鎖。加意向鎖不會影響加行級鎖,它只會阻塞表級鎖。使用意向鎖(intention locks)可以支援多粒度封鎖(同時存在表級鎖和行級鎖)。
意向鎖主要解決在表級鎖和行級鎖同時存在時,
加表級鎖需要檢測表級鎖和每一行的行級鎖時效率低下的問題。比如在同時存在表級鎖和行級鎖的時候,如果乙個事務想要對錶a加x鎖(表級鎖),就要檢測表a以及表a的任一行是否加了鎖,這樣檢測十分耗時。
意向鎖的主要作用是:如果有乙個事務在表上加了鎖,其他事務想要在該錶級別上應用x鎖或s鎖,就會受到第乙個事務的意向鎖的阻塞。其他事務在鎖定該錶之前不需要檢測表或者表的每一行是否加了鎖,而只需要檢測表的意向鎖。
意向鎖是資料引擎(innodb)自己維護的,使用者不能手動修改意向鎖。乙個事務在表的某一行加x鎖或s鎖之前,資料引擎會先獲取該資料行所在資料表的相應ix或is鎖。
所有的意向鎖之間是相容的。意向鎖也不會與行級的s/x鎖互斥。
意向鎖不會影
響多個事務對錶的不同行加互斥鎖,但用普通的表鎖會
。意向鎖只是為了用來阻塞表級鎖,意向鎖和表級讀寫鎖之間的相容關係如下表:
意向互斥鎖
意向共享鎖
表級互斥鎖
衝突衝突
表級共享鎖
衝突相容
資料庫 封鎖技術
前幾天我們自考小組,一起學習資料庫,學習到了併發操作,由於並行技術帶來了幾個問題,通過鎖可以解決這些問題,但是鎖不好理解,完全不知道是怎麼用的,聽著比較高大上,但是經過分析也就不過如此。許多事務可能同時對同一資料進行操作,這個操作叫做併發操作,這裡的 併發 指的是單處理機,利用分時方法實行多個事務的...
資料庫 封鎖技術
一 前言 資料庫的併發操作通常會帶來三個問題 丟失更新 讀髒資料 不可重複讀。解決這些問題就需要用到資料庫的封鎖機制進行控制,但封鎖機制的引入又引起了一系列問題 效能下降 死鎖等。1 丟失更新 乙個事務的更新覆蓋了其他事務的更新結果。例如使用者a把值從8改到了5,使用者b把值從5改到了8,則使用者a...
資料庫三個級別封鎖協議
鎖的型別 基本的封鎖型別有兩種 排它鎖 x鎖 和共享鎖 s鎖 所謂x鎖,是事務t對資料a加上x鎖時,只允許事務t讀取和修改資料a,所謂s鎖,是事務t對資料a加上s鎖時,其他事務只能再對資料a加s鎖,而不能加x鎖,直到t釋放a上的s鎖。若事務t對資料物件a加了s鎖,則t就可以對a進行讀取,但不能進行更...