資料庫層面的鎖

2021-08-23 14:32:17 字數 992 閱讀 2402

那是一種行級鎖,一旦使用者對某個行施加了行級加鎖,則該使用者可以查詢也可以更新被加鎖的資料行,

其它使用者只能查詢但不能更新被加鎖的資料行.如果其它使用者想更新該表中的資料行,則也必須對該錶施加行級鎖.即使多個使用者對乙個表均使用了共享更新,但也不允許兩個事務同時對乙個表進行更新,真正對錶進行更新時,是以獨佔方式鎖表,一直到提交或復原該事務為止。行鎖永遠是獨佔方式鎖。

只有當出現如下之一的條件,便釋放共享更新鎖:

(1)、執行提交(commit)語句;

(2)、退出資料庫(log off)

(3)、程式停止執行。

資料庫併發需要使用事務來控制,事務併發問題需要資料庫鎖來控制,所以資料庫鎖是跟併發控制和事務聯絡在一起的

資料庫鎖有「共享鎖」,「排它鎖」,「互斥鎖」,「寫鎖」,「讀鎖」,「悲觀鎖」,「樂觀鎖」,「行級鎖」,「表級鎖」,「頁級鎖」等

樂觀鎖:就是不做控制,這只是一部分人對於併發所持有的一種態度而已,使用者讀資料的時候,別人不會去寫自己所讀的資料

悲觀鎖:自己修改某條資料的時候,不允許別人讀取該資料,只有等自己的整個事務提交了,才釋放自己加上的鎖,才允許其他使用者訪問那部分資料

活鎖:死鎖:

行級鎖:行級鎖是一種排他鎖,select … for update語句允許使用者一次鎖定多條記錄進行更新

共享鎖:

鎖定表:對記錄唯讀不寫,多個使用者可以同時在同乙個表上應用此鎖

表級鎖又分為5類:

行共享 (row share) – 禁止排他鎖定表

行排他(row exclusive) – 禁止使用排他鎖和共享鎖

共享鎖(share) - 鎖定表,對記錄唯讀不寫,多個使用者可以同時在同乙個表上應用此鎖

共享行排他(share row exclusive) – 比共享鎖更多的限制,禁止使用共享鎖及更高的鎖

排他(exclusive) – 限制最強的表鎖,僅允許其他使用者查詢該錶的行。禁止修改和鎖定表。

高併發大資料資料庫層面的處理

三種併發策略 1.什麼都不做,任由併發產生,以最終提交結果為準。2.開放式併發,衝突產生時,告訴使用者當前資源被占用。3.保守式併發,強制加鎖,只有當前使用者更新提交完畢才能被下乙個使用者占用。保守式併發 保守式併發通常用於兩個目的。第一,在某些情況下,存在對相同記錄的大量爭用。在資料上放置鎖所費的...

資料庫(2)資料庫鎖

這一段時間一直在學習關係型資料庫,準備寫乙個小專題來總結一下這一段時間的學習結果。二.事物隔離等級和鎖的關係 網上很多部落格都是直接說了一連串的鎖,什麼悲觀鎖樂觀鎖,什麼讀寫鎖,什麼排他鎖共享鎖。說的不僅語焉不詳,而且分類紊亂,希望看到這篇文章能幫助你理清思路。從鎖的實現方式來看,鎖可以分為悲觀鎖和...

mysql資料庫鎖 MySQL資料庫的鎖機制

在併發訪問情況下,很有可能出現不可重複讀等等讀現象。為了更好的應對高併發,封鎖 時間戳 樂觀併發控制 樂觀鎖 悲觀併發控制 悲觀鎖 都是併發控制採用的主要技術方式。鎖分類 按操作劃分 dml鎖,ddl鎖 按鎖的粒度劃分 表級鎖 行級鎖 頁級鎖 按鎖級別劃分 共享鎖 排他鎖 按加鎖方式劃分 自動鎖 顯...