MYSQL中的意向排他鎖只能存在乙個嗎 還是可以存在多個

時間 2021-06-09 16:13:57

1樓:Ethan

先上結論:可以存在多個。

而且意向鎖比較有趣的是,IS 和 IX 之間不互斥,之間的關係如下。

這時你可能有疑問,既然不互斥,那它倆存在的意義是什麼?

答案就是:和共享鎖和排他鎖互斥。敲重點:這裡是共享和怕他鎖粒度:是表級別的鎖。給個場景體會下:

# 將 id=0 的這一行鎖住

select * from t where id=0 for update;

此時如果有乙個事務想要進行鎖表操作

LOCK TABLES .... WRITE如果沒有意向鎖的話,就需要去一行行檢測所在表中是否存在寫鎖,效率很低。

反之,檢測起來就容易多了。

下面是 MySQL 關於意向鎖的具體描述, 有興趣的話可以參考。

14.7.1 InnoDB Locking最後提一點:

在實際中,手動鎖表並不常見,所以意向鎖並不常用。而且後來又引入了 MDL 鎖,解決 DML 和 DDL 的衝突。意向鎖就更不常用了。

2樓:勤勞的小手

只能存在乙個,應該說乙個表只會存在乙個意向排他鎖,意向排它鎖相當於乙個標記位,加了意向拍它鎖之後,其他的請求就不能再對整個表加排他鎖了(但是可以加行級別的排他鎖)。其原理可見:勤勞的小手:

詳解mysql的各種鎖(表鎖、行鎖、共享鎖、意向共享鎖、記錄鎖、間隙鎖、臨鍵鎖)

3樓:青生先森

事務打算給資料行加行排他鎖/共享鎖,事務在給乙個資料行加排他鎖/共享鎖前必須先取得該錶的意向鎖,即不同行意向鎖可以共存。

4樓:乾貨滿滿張雜湊

簡單理解,innodb中的意向排他鎖是事務在請求某一行排他鎖前,要先獲得這個表的意向排他鎖。例如,事務A修改user表的記錄r,會給記錄r上一把行級的排他鎖(X),同時會給user表上一把意向排他鎖(IX),這時事務B要給user表上乙個表級的排他鎖就會被阻塞。意向鎖通過這種方式實現了行鎖和表鎖共存且滿足事務隔離性的要求。

對於同一張表,不同行的IX可以共存。

如果只能選乙個,你更喜歡乙個幻想中的妹妹還是幻想中的女兒

靚靚 擁有任何乙個,我都欣喜若狂。要非選乙個還是妹妹吧!因為父親有時必須嚴厲,哥哥可以一直護著。哥哥可以替妹妹報仇,但父親不行。大人打小孩不太好。 楠楠吶 我才高中,現在的話,選妹妹,我做夢都想有弟弟或妹妹,不幸的是,我是家裡最小的孩兒,只有哥哥姐姐,每次看到別人的弟弟妹妹,都羨慕的要瘋了,太不容易...

有乙個賭博的親人只能陪葬嗎?

birdzzzzpk 簡單來說親人在賭徒前只能 盡人事,聽天命 第一點,用一切可以動用的手段限制他的金錢,貸款逾期,通知親友不能借錢,身份證,手機沒收,錢不能經他手。過一段時間,賭癮應該會降下來。第二點,讓本人認識賭博的危害,明白十賭九輸,如有必要可以去看心理醫生,要充分認識賭博的自己,實際上是乙個...

沒有觀測乙個物體的時候那個物體還存在嗎?

吳露銘 沒有觀測乙個物體的時候那個物體有可能存在,也有可能不成在,因為物體的存在與否不在於你有沒有觀測。如果無法觀測到乙個物體,就只能認為它不存在,儘管你以後觀測手段先進了,又觀測到了那個物體,但現在你只能認為它不存在。 wuotan 我們更極端來說,就是以一切手段都無法觀測的物體存在嗎?那答案也就...