什麼是共享讀鎖和排他寫鎖?

2022-02-26 15:01:49 字數 790 閱讀 6032

① 由非更新(讀取)操作建立的鎖。其他使用者可以併發讀取資料,但任何事務都不能獲取資料上的排它鎖,直到已釋放所有共享鎖。共享鎖(s鎖)又稱為讀鎖,若事務t對資料物件a加上s鎖,則事務t只能讀a, 不能修改a;其他事務只能再對a加s鎖,而不能加x鎖,直到t釋放a上的s鎖。這就保證了其他事務可以讀a,但在t釋放a上的s鎖之前不能對a做任何修改。

② 排他鎖(x鎖),又稱為寫鎖、獨佔鎖,是一種基本的鎖型別。若事務t對資料物件a加上x鎖,則只允許t讀取和修改a,其他任何事務都不能再對a加任何型別的鎖,直到t釋放a上的鎖。這就保證了其他事務在t釋放a上的鎖之前不能再讀取和修改a。

1、共享鎖只用於表級

,排他鎖用於行級

2、加了共享鎖的物件,可以繼續加共享鎖,不能再加排他鎖。加了排他鎖後,不能再加任何鎖。

3、比如乙個dml操作(資料增刪改操作),就要對受影響的行加排他鎖,這樣就不允許再加別的鎖,也就是說別的會話不能修改這些行。同時為了避免在做這個dml操作的時候,有別的會話執行ddl (表結構更改等操作) ,修改表的定義,所以要在表上加共享鎖,這樣就阻止了ddl操作。

4、當執行ddl操作時,就需要在全表上加排他鎖。

總結:

mysql 執行增刪改時:

① 使用到索引的前提下,對索引行執行排它鎖(x),對錶執行共享鎖(s),防止在此期間有別的會話執行 ddl 操作;

② 沒有使用到索引的前提下,則會鎖住整個表(非常危險的操作);

mysql 共享鎖 讀鎖 排他鎖 寫鎖

共享鎖概述 多個客戶端在同一時刻可以同時讀取同乙個資源,而互不干擾 互不阻塞.排他鎖概述 客戶端 當前程序 在寫入資料的時 會阻塞其他的讀鎖 寫鎖.從而保證同一時刻防止其他使用者讀取正在寫入的同一資源.在實際資料庫系統中,每時每刻都在發生鎖定 當某個使用者在修改某一部分資料時,mysql 會通過鎖定...

什麼是共享鎖 什麼是排他鎖

什麼是共享鎖?什麼是排他鎖?共享鎖 如果事務t對資料a加上共享鎖後,則其他事務只能對a再加共享鎖,不能加排他鎖。獲准共享鎖的事務只能讀資料,不能修改資料。排他鎖 如果事務t對資料a加上排他鎖後,則其他事務不能再對a加任任何型別的封鎖。獲准排他鎖的事務既能讀資料,又能修改資料。簡要說明為什麼會發生死鎖...

MySQL 共享鎖和排他鎖

當我們在運算元據庫時,可能由於多使用者併發導致資料不一致性。而鎖的出現就是通過禁止某些操作在一段時間之內來避免這種資料的不一致性。又稱讀鎖 s 對某一資源加共享鎖,自身可以讀該資源,其他人也可以讀該資源 也可以再繼續加共享鎖,即 共享鎖可多個共存 但無法修改。要想修改就必須等所有共享鎖都釋放完之後。...