鎖是網路資料庫中的乙個非常重要的概念,當多個使用者同時對資料庫併發操作時,會帶來資料不一致的問題,所以,鎖主要用於多使用者環境下保證資料庫完整性和一致性
資料庫鎖出現的目的:處理併發問題
併發控制的主要採用的技術手段:樂觀鎖、悲觀鎖和時間戳
鎖分類從資料庫系統角度分為三種:排他鎖、共享鎖、更新鎖。
從程式設計師角度分為兩種:一種是悲觀鎖,一種樂觀鎖。
悲觀鎖(pessimistic lock)
顧名思義,很悲觀,每次去拿資料的時候都認為別人會修改,所以每次在拿資料的時候都會上鎖,這樣別人拿這個資料就會block(阻塞),直到它拿鎖。
傳統的關聯式資料庫裡用到了很多這種鎖機制,比如行鎖、表鎖、讀鎖、寫鎖等,都是在操作之前先上鎖。
悲觀鎖按使用性質劃分
共享鎖(share lock)
s鎖,也叫讀鎖,用於所有的唯讀資料操作。共享鎖是非獨佔的,允許多個併發事務讀取其鎖定的資源。
性質多個事務可封鎖同乙個共享頁;
任何事務都不能修改該頁;
通常是該頁被讀取完畢,s鎖立即被釋放。
排他鎖(exclusive lock)
x鎖,也叫寫鎖,表示對資料進行寫操作。如果乙個事務對物件加了排他鎖,其他事務就不能再給它加任何鎖了。(某個顧客把試衣間從裡面反鎖了,其他顧客想要使用這個試衣間,就只有等待鎖從裡面開啟了。)
性質僅允許乙個事務封鎖此頁;
其他任何事務必須等到x鎖被釋放才能對該頁進行訪問;
x鎖一直到事務結束才能被釋放。
更新鎖u鎖,在修改操作的初始化階段用來鎖定可能要被修改的資源,這樣可以避免使用共享鎖造成的死鎖現象。
性質用來預定要對此頁施加x鎖,它允許其他事務讀,但不允許再施加u鎖或x鎖;
當被讀取的頁要被更新時,則公升級為x鎖;
u鎖一直到事務結束時才能被釋放
悲觀鎖按作用範圍劃分為:行鎖、表鎖。(這部分摘自 )行鎖
鎖的作用範圍是行級別。
表鎖鎖的作用範圍是整張表。
資料庫能夠確定那些行需要鎖的情況下使用行鎖,如果不知道會影響哪些行的時候就會使用表鎖。
樂觀鎖(optimistic lock)
顧名思義,就是很樂觀,每次去拿資料的時候都認為別人不會修改,所以,不會上鎖。但是在更新的時候會判斷一下在此期間別人有沒有更新這個資料,可以使用版本號等機制。
資料庫 鎖(概念 分類 粒度)
1 概念 資料庫是乙個多使用者使用的共享資源。當多個使用者併發地訪問資料時,在資料庫中就會產生多個事務同時訪問同一資料的情況。若對併發操作不加控制就可能會讀取和儲存不正確的資料,破壞資料庫的一致性。加鎖是實現資料庫併發控制的乙個非常重要的技術。當事務在對某個資料物件進行操作前,先向系統發出請求,對其...
資料庫鎖分類和總結
鎖是網路資料庫中的乙個非常重要的概念,當多個使用者同時對資料庫併發操作時,會帶來資料不一致的問題,所以,鎖主要用於多使用者環境下保證資料庫完整性和一致性。幫助理解 以商場的試衣間為例,每個試衣間都可供多個消費者使用,因此,可能出現多個消費者同時需要使用試衣間試衣服。為了避免衝突,試衣間裝了鎖,某乙個...
資料庫的分類
1關係型資料庫 2非關係型資料庫 3兩種資料庫之間的區別 3.1關係型資料庫的特性 1 關係型資料庫,是指採用了關係模型來組織資料的資料庫 2 關係型資料庫的最大特點就是事務的一致性 3 關係模型指的就是二維 模型 表 而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個資料組織。3.2關係型資...